2012-03-27 81 views
8

我需要帮助调试Python中的一些奇怪的文件行为。看看下面的脚本(write_con.py):为什么在窗口中命名文件'con.txt'会使Python写入控制台,而不是文件?

f=open('con.txt','w') 
f.write('hi') 

在Linux中,这将创建一个与内容hi称为con.txt文件。在Windows中,这会将hi写入控制台,并且不会创建文件。我已经用Python 2.5.1,2.6.3,2.6.5和2.7.2试了这个。举例来看:

C:\Users\rpsharp> C:\Python27\python.exe .\write_con.py 
hiC:\Users\rpsharp> C:\Python25\python.exe .\write_con.py 
hiC:\Users\rpsharp> 

然而,一个名为比一些其他任何东西,开始与con文件工作正常(write_other_con.py):

f=open('other_con.txt','w') 
f.write('hi') 

这里有一个跑步:

C:\Users\rpsharp> C:\Python25\python.exe .\write_other_con.py 
C:\Users\rpsharp> type .\other_con.txt 
hi 

这是怎么回事那当指定文件的前缀是con时,会导致python的windows版本写入控制台?

回答

9

您必须检查Wikipedia Filename page。它有一个包含相当多文件系统的保留字符的表格。

在Windows和DOS实用程序中,某些单词可能也是保留的,不能用作文件名。例如,DOS设备文件:

CON,PRN,AUX,CLOCK $,NUL COM0,COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9 LPT0,LPT1, LPT2,LPT3,LPT4,LPT5,LPT6,LPT7,LPT8和LPT9。

10

Legacy。在DOS中,写入名为“CON”的文件将其写入控制台; Windows继续这个传统。

5

这不是Python错误,而是Windows的命名约定。有一个保留的关键字列表,Windows将不允许您保存文件或文件夹,包括CON, PRN, AUX, CLOCK$, NUL COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9.

1

在Windows中,con是保留字,不能用作文件名。

相关问题