open()输出txt文件,奇怪报错
python3.8.5
代码如下:
x = open("C:\\Users\\abc\\Desktop\\" + "1:2:3" + ".txt","w+")
报错如下:
Traceback (most recent call last):
File "<pyshell#33>", line 1, in <module>
x = open("C:\\Users\\abc\\Desktop\\" + "1:2:3" + ".txt","w+")
OSError: [Errno 22] Invalid argument: 'C:\\Users\\abc\\Desktop\\1:2:3.txt'
如果把1:2:3.txt
改成1:2.txt
就不会报错了,是什么原因呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
桌面没有
1:2:3.txt
文件在文件名后面跟一个冒号是有特殊含义的,表示这个路径指向该文件的一个 ntfs alternate data streams (可以去搜搜这个名词)。
具体到这里,
1:2.txt
不会报错是因为创建了一个名字叫1
的文件,并为这个文件创建了一个名字叫2.txt
的 alternate data stream,并且之后如果你写入了内容的话,写入的内容都是会存到这个 alternate data stream 里去的。具体可以根据这篇博客:NTFS格式下的Alternate Data Streams 里面的“测试”来验证:
1:2:3.txt
报错的原因便是格式是非法的,普通的文件名是不能含有 ":" 字符的,如果含有,那就是 ntfs alternate data streams 的格式含义!那么两个冒号 "::" 就需要符合格式,第二个冒号后面跟的内容应该是符合<流种类>
的!!!而
3.txt
显然不是<流种类>
。