2014-02-28 55 views
0

我試圖在python中使用open()創建文件時收到IOError,這似乎只發生在單個文件名中。這些目錄完全存在並且授予了權限,循環成功地創建了大約1000個文件。當下面的代碼中的epic = "CON"我收到「沒有這樣的文件或目錄」錯誤,但它適用於其他值。Python在寫入模式下打開文件IOError

f = open('data\\LSE\\%s.csv' % epic.strip(),'w') 
f.write(u.read()) 
f.close() 

難道這是一個種族問題?這些文件很快創建。

我是新來的python,所以如果有什麼明顯的我錯過了,道歉!

+0

print repr(史詩)是什麼print? –

+0

'COD'。有更多的怪異,使用控制檯,打開('data \\ LSE \\ COD',w)給出「不良文件描述符」,但CAD,CO,CODD一切正常。我也嘗試在其他目錄中進行測試,並遇到相同的行爲 – user5980

+0

open('data \\ LSE \\ COD.csv',w)或打開('data \\ LSE \\ COD',w)? –

回答

1

問題是您在Windows上運行此代碼,該代碼仍包含MS-DOS 1.0中的一些遺留物。 CON是控制檯設備的特殊名稱。您不能將其用作文件名。最早的MS-DOS版本不支持目錄,也不支持8.3文件命名模式的所謂「擴展」。因此,無論目錄和擴展名如何,該名稱都是特殊的。

一些參考:


http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx

不要使用以下保留名稱的文件的名稱:

CON,PRN,AUX,NUL,COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9,LPT1,LPT2,LPT3,LPT4,LPT5,LPT6,LPT7,LPT8和LPT9。同時避免使用這些名稱,緊接着是擴展名;例如,不建議使用NUL.txt。

+0

感謝dsh,我想我必須更改我的股票行情文件命名慣例! – user5980