2013-02-28 111 views
17

我不知道爲什麼,但由於某種原因,只要我在輸出文件的文件名中有「region」,它就會給我此錯誤:Region:IOError:[Errno 22] invalid mode('w')or filename

IO錯誤:[錯誤22]無效的模式( 'W')或文件名: '路徑\ regionlog.txt'

它這樣做是爲「region.txt」「 logregion.txt「

class writeTo: 
    def __init__(self, stdout, name): 
     self.stdout = stdout 
     self.log = file(name, 'w') #here is where it says the error occurs 

output = os.path.abspath('path\regionlog.txt') 
writer = writeTo(sys.stdout, output) #and here too 

這是爲什麼?我真的想將我的文件命名爲「regionlog.txt」,但它不斷出現該錯誤。有沒有辦法解決它?

回答

26

使用正斜槓:

'path/regionlog.txt' 

或原始字符串:

r'path\regionlog.txt' 

或者至少逃不出你的反斜線:

'path\\regionlog.txt' 

 

\r是回車。

 

另一種選擇:使用os.path.join,你會不會有根本不用擔心斜線:

output = os.path.abspath(os.path.join('path', 'regionlog.txt')) 
+1

第三個選項:雙斜線。 – 2013-02-28 17:25:22

+1

第四種選擇:使用'os.path.join'。 OP已經導入了'os.path'。 – 2013-02-28 17:26:08

1

在C標準語言,\t\n\r是轉義字符。 \t是下一個TAB位置的橫向。 \n是換行符,\r是回車符。您應該使用\\r/r,並且您將解決問題!

+0

下一次,請檢查以確保您輸入的內容在屏幕上正確顯示,因爲您的'\\ r'顯示爲'\ r',這根本不會有幫助。 – 2017-03-14 12:04:43

0

另一個簡單的解決方案是改變爲 「\ r」 實例中的文件名的路徑 「\ R」