在Python中打开一个符号链接的文件

时间:2018-05-13 22:40:04

标签: python symlink

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

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

在MacOS上,如果file.txt是符号链接 - Python将遵循符号链接并读取目标文件。但是,在Windows上它没有这样做 - 我怎么能实现这个目标?

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

  1. FileA.txt中创建DirectoryA以上DirectoryB
  2. DirectoryB内,运行mlink FileA.txt "../FileA.txt"
  3. 运行Python脚本,尝试从FileA.txt
  4. 中的DirectoryB链接进行阅读和打印

    预期行为:

    FileA.txtDirectoryA的内容应打印

    实际行为:

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

2 个答案:

答案 0 :(得分:1)

还有其他问题。我强烈怀疑你没有从包含 return new ModelAndView("member2",map); 的目录中运行它。

我正在使用Windows 10和Python 3.6。

这里我正在创建一个文件(使用可靠的记事本)。我在第一行中添加了一些文本到文件,并验证它存在于第二行。

 return new ModelAndView("/member2",map);

现在到了python ......

file.txt

这对我有用。为了帮助您,需要更多细节,但就目前而言,您的问题是不可重复的。

现在您已经按照确切的步骤更新了问题,我可以准确地告诉您出了什么问题。

但首先 - 尝试在记事本(或其他任何东西)中打开该文件。

  

它不会打开 - 相反它会给文件错误。

这是因为你给它的路径。 Windows使用cd c:\ notepad test.txt mklink other.txt test.txt notepad other.txt 作为目录分隔符 - 但您已使用f = open("C:\\other.txt") f.read() 创建符号链接。此符号链接指向无效的文件名。 Python很适合(跨平台)为你转换它 - 但是Windows没有这样的东西。

再次尝试使用说明 - 但这次使用\

答案 1 :(得分:0)

我不做MS Windows。但这可能会有所帮助:http://winshell.readthedocs.io/en/latest/shortcuts.html

您的MS Windows版本是否真的支持符号链接?或者您正在处理这些“快捷方式”(Shell链接)?它实际上是否有.lnk扩展名?