2010-06-22 41 views
22

我正在嘗試使用文件上下文管理器寫入一個尚不存在的文件。確實寫模式創建一個新文件,如果不存在?

a=open ('C:/c.txt' , 'w') 

以上不成功。如果它已經存在,我將如何創建一個寫入文件?

+0

沒有repro,對我來說工作得很好 – SilentGhost 2010-06-22 16:18:58

+0

請添加到您的問題:什麼版本的Python,您正在運行的平臺(Windows?)和確切的錯誤消息。 – 2010-06-22 16:20:27

+1

如果文件不存在,「w」模式應該會自動創建該文件 - 請問您可以編輯您的問題以包含您正在運行的特定命令/代碼以及錯誤消息和回溯結果?謝謝。 – nearlymonolith 2010-06-22 16:21:15

回答

0

如果您在文件不存在時要求如何警告,那麼您需要明確檢查。

here

27

是,'w'被指定爲創建一個新的文件 - 如the docs所說的那樣,

'W' 寫(截斷文件 如果它已經存在),

(明確推斷它允許不存在)。細節問題 - 例如,請顯示確切的回溯,而不僅僅是您自己的總結。如果您使用的實際路徑不同,缺少的可能是驅動器或某個中間目錄;或者可能有權限問題。

+7

請注意,它不會創建目錄,如果這些不存在,但。 – 2016-06-06 01:28:44

3

[編輯,以反映該問題很可能不轉發與反斜線]

如果我理解正確的,你想爲你自動創建的文件,對不對?

在寫模式下打開確實會爲您創建文件。如果你告訴我們你得到的確切錯誤,這將更加清楚。這可能是像你沒有權限寫C :.

我以前曾認爲,可能是因爲正斜槓,並表示OP可以嘗試:

a = open(r'C:\c.txt', 'w') 

注意[R文件路徑前,表示原始模式(即是,反斜槓不會被解釋爲特殊的)。然而,正如Brian Neal指出的(以及其他人在其他地方發表評論),這可能不是導致錯誤的原因。我只是爲了歷史目的而將它保留在這裏。

+0

這不是正斜槓。他的代碼片段在Windows上適合我。 – 2010-06-22 16:55:14

+0

這件事發生在我稍後。我仍然在等待OP給我們提供錯誤,但我會在此期間編輯我的答案。謝謝:) – rbp 2010-06-22 17:43:01

3

您可能正試圖寫入一個不存在的目錄或者您沒有寫入權限的目錄。

如果你想寫C:\foo\bar\foobar.txt然後確保你有一個C:\foo\bar\存在(如果權限在Windows上工作,請確保你有權限在那裏寫)。

現在,當您以寫入模式打開文件時,應該創建一個文件。

+0

我敢打賭,這是一個權限問題。 Vista和Windows 7的默認設置不允許普通用戶在根目錄中寫入文件。 – 2010-06-22 18:02:19

相關問題