python - 在 Python 中打开一个符号链接文件
问题描述
我有一些python代码可以打开一个文件来读取它......
with open("file.txt") as f:
print(f.read())
在 MacOS 上, iffile.txt
是一个符号链接 - Python 将跟随符号链接并读取目标文件。但是,在 Windows 上它不会这样做 - 我怎样才能做到这一点?
(使用 Python 版本 3.6.5 和 Windows 10)重现的步骤。
FileA.txt
在DirectoryA
上面创建DirectoryB
- 里面
DirectoryB
,跑mlink FileA.txt "../FileA.txt"
- 运行一个 Python 脚本,该脚本尝试从中的
FileA.txt
链接读取和打印DirectoryB
预期行为:
FileA.txt
里面的内容DirectoryA
应该打印出来
实际行为:
OSError: [Errno 22] Invalid argument: 'FileA.txt'
解决方案
还有其他事情出错了。我强烈怀疑您没有从包含file.txt
.
我正在使用 Windows 10 和 Python 3.6。
在这里,我正在创建一个文件(使用可信赖的记事本)。我在第一行向文件中添加了一些文本,并验证它存在于第二行中。
cd c:\
notepad test.txt
mklink other.txt test.txt
notepad other.txt
现在转到python...
f = open("C:\\other.txt")
f.read()
这一切都对我有用。为了帮助您,将需要更多详细信息,但就目前而言,您的问题无法重现。
现在您已经用确切的步骤更新了您的问题,我可以准确地告诉您出了什么问题。
但首先 - 尝试在记事本(或其他任何东西)中打开该文件。
它不会打开 - 而是会给出文件错误。
这是因为你给它的路径。Windows 使用\
目录分隔符——但您已经习惯/
了创建符号链接。此符号链接指向无效的文件名。Python 足够好(跨平台)可以为您转换它 - 但 Windows 没有这样的事情。
再次尝试您的说明 - 但这次使用mklink FileA.txt "..\FileA.txt"
推荐阅读
- c++ - 如何将子方法调用为父方法
- angular - 使用 noop zone 时如何启动组件的生命周期?
- c# - Automapper 将多个可选属性映射到列表
- ios - TLSphinx cmusphinx pocketsphinx 假设结果文本 空字符串 分数 负 (-) 数
- permissions - GetstreamIO 聊天审核
- angular - 在单击按钮时加载组件 ngOnInit 或构造函数多次执行
- python - 在csv pandas python中添加特殊字符
- ironpython - 用列名切换我的行中的第一组值(IronPython)
- javascript - 将多个网站集成到一个没有 iframe 的反应应用程序
- sql - 多对一合并sql