在 Python 中打开一个符号链接文件
Opening a file which is a symlink in Python
我有一些 python 代码可以打开一个文件来读取它...
with open("file.txt") as f:
print(f.read())
在 MacOS 上,如果 file.txt
是符号 link - Python 将跟随符号 link 并读取目标文件。但是,在 Windows 上它不会这样做 - 我怎样才能做到这一点?
(使用 Python 版本 3.6.5 和 Windows 10)
重现步骤。
- 在
DirectoryB
之上的 DirectoryA
中创建 FileA.txt
- 里面
DirectoryB
, 运行 mlink FileA.txt "../FileA.txt"
- 运行 一个 Python 脚本,它试图从
DirectoryB
中的 FileA.txt
link 读取和打印
预期行为:
应该打印DirectoryA
里面的FileA.txt
的内容
实际行为:
OSError: [Errno 22] Invalid argument: 'FileA.txt'
我不做 MS Windows。但这可能会有所帮助:http://winshell.readthedocs.io/en/latest/shortcuts.html
您的 MS Windows 版本真的支持符号链接吗?或者您正在处理这些“快捷方式”(Shell 链接)?它真的有 .lnk 扩展名吗?
其他地方出了问题。我强烈怀疑你不是来自包含 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"
我有一些 python 代码可以打开一个文件来读取它...
with open("file.txt") as f:
print(f.read())
在 MacOS 上,如果 file.txt
是符号 link - Python 将跟随符号 link 并读取目标文件。但是,在 Windows 上它不会这样做 - 我怎样才能做到这一点?
(使用 Python 版本 3.6.5 和 Windows 10) 重现步骤。
- 在
DirectoryB
之上的 - 里面
DirectoryB
, 运行mlink FileA.txt "../FileA.txt"
- 运行 一个 Python 脚本,它试图从
DirectoryB
中的
DirectoryA
中创建 FileA.txt
FileA.txt
link 读取和打印
预期行为:
应该打印DirectoryA
里面的FileA.txt
的内容
实际行为:
OSError: [Errno 22] Invalid argument: 'FileA.txt'
我不做 MS Windows。但这可能会有所帮助:http://winshell.readthedocs.io/en/latest/shortcuts.html
您的 MS Windows 版本真的支持符号链接吗?或者您正在处理这些“快捷方式”(Shell 链接)?它真的有 .lnk 扩展名吗?
其他地方出了问题。我强烈怀疑你不是来自包含 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"