2012-03-27 62 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是保留字,不能用作文件名。

相關問題