fp = open("D:\\foo:bar.txt", "w")
fp.close()
上面 👆 这样的行为,执行不会报错,windows 系统中创建了一个 foo
文件名的文件。
fp = open("D:\\foo:bar:egg.txt", "w")
fp.close()
👆 这样的行为,执行就会报错,错误为:
OSError: [Errno 22] Invalid argument: 'D:\\foo:bar:egg.txt'
含有 ":" 字符的文件名在 windows 系统下是非法的( Invalid ),那么第一个 foo:bar.txt
也应该直接报错呀。
这是为什么???
1
lonewolfakela 2020-08-11 09:35:58 +08:00 8
在文件名后面跟一个冒号是有特殊含义的,表示这个路径指向该文件的一个 ntfs alternate data streams (可以去搜搜这个名词)。
具体到这里,你的第一个例子其实是创建了一个名字叫 foo 的文件,并为这个文件创建了一个名字叫 bar.txt 的 alternate data stream,并且之后如果你写入了内容的话,写入的内容都是会存到这个 alternate data stream 里去的。 |
2
no1xsyzy 2020-08-11 09:50:17 +08:00 1
|