2010-10-12 63 views
2

相當尷尬的問題,雖然我來自web開發,很少有處理文件I/O。在Python中編寫空字符串到文本文件

我寫了一個簡單的配置更新,用於我的共享主機。它掃描子目錄的目錄,然後將配置行寫入文件 - 每個子目錄一行。問題是,當它檢測到有配置行但沒有子目錄時,它應該保持配置爲空 - 這是行不通的!來這裏,因爲文檔沒有提及它,谷歌也沒有幫助。它在Debian Lenny上的Python 2.6.6。

file = open('path', 'r+') 
config = file.read() 
## all the code inbetween works fine 
## config is .split()-ed, hence the list 
if config == ['']: 
    config = '' 
file.write(config) 
file.close() 

在這種情況下,文件根本沒有改變。有趣的是,使它忘記配置,只是做file.write('')不會清空該文件,但將\ n放在該行的表面上隨機位置。

回答

3

您正在使用r+讀寫模式。所有讀取和所有寫入都會更新文件的位置。

嘗試:

file = open('path', 'r+') 
config = file.read() 
## all the code inbetween works fine 
## config is .split()-ed, hence the list 
if config == ['']: 
    config = '' 
file.seek(0) # rewind the file 
file.write(config) 
file.close() 
+0

我已經更新腳本和使用ARS的答案,但你是在提出正確的情況下。謝謝! – Red 2010-10-13 08:47:20

2

您可能想要在調用open時使用'w+'模式來截斷文件。

2

如果你想清空文件,使用truncate

f.truncate(0) 
f.close()