首页 > 解决方案 > 在 Python 中打开一个符号链接文件

问题描述

我有一些python代码可以打开一个文件来读取它......

with open("file.txt") as f:
    print(f.read())

在 MacOS 上, iffile.txt是一个符号链接 - Python 将跟随符号链接并读取目标文件。但是,在 Windows 上它不会这样做 - 我怎样才能做到这一点?

(使用 Python 版本 3.6.5 和 Windows 10)重现的步骤。

  1. FileA.txtDirectoryA上面创建DirectoryB
  2. 里面DirectoryB,跑mlink FileA.txt "../FileA.txt"
  3. 运行一个 Python 脚本,该脚本尝试从中的FileA.txt链接读取和打印DirectoryB

预期行为:

FileA.txt里面的内容DirectoryA应该打印出来

实际行为:

OSError: [Errno 22] Invalid argument: 'FileA.txt'

标签: pythonsymlink

解决方案


还有其他事情出错了。我强烈怀疑您没有从包含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"


推荐阅读