2013-04-17 78 views
0

我試圖追加在Django文件做一個字符串替換出於某種原因它不是寫入文件。我的閱讀沒有問題。Django項目不寫入文件

views.py

with open('/home/me/dev/Django/rulebase/result.rb', 'a') as discover_reading: 
    mydiscover = File(discover_reading) 
    for line in mydiscover: 
     line.replace('input = "', 'this') 
    mydiscover.closed 

我得到我的瀏覽器這個錯誤:

Exception Type:  IOError 
Exception Value:  

File not open for reading 
+1

嘛,'開(..., 'A')'打開寫(追加),不讀。但是,您的代碼沒有多大意義。你想要達到什麼目的? – Aya

+0

你們是不是要一個文件的內容複製到另一個文件''mydiscover更換一些內容? – msvalkon

+0

我想讓代碼打開文件搜索字符串,然後替換文件中的字符串。 – saiyan101

回答

0

您必須使用 'R' 標誌,閱讀打開它。

open('/home/me/dev/Django/rulebase/result.rb', 'r') 
+0

這沒有必要。 – gioi

1

下面將替換該文件的內容:

with open('/home/me/dev/Django/rulebase/result.rb', 'r') as discover_reading: 
    lines = [line.replace('input = "', 'this') for line in discover_reading.readlines()] 

with open('/home/me/dev/Django/rulebase/result.rb', 'w') as discover_reading: 
    discover_reading.writelines(lines) 

你例子完全不工作

閱讀file objectsstring.replace請的文檔。 File不是內置函數,str.replace不能就地替換(字符串是不可變的),並且mydiscover.closed用於告知文件是否關閉,而不是用於關閉打開的文件。

有人提出你原來的錯誤,因爲你正試圖讀取你與a標誌,它代表了追加打開一個文件行。

+0

謝謝你在它結束時想要的是它是刪除整行添加,然後用'this'替換它。它確實需要刪除不需要的字符。當我運行該腳本文件包含 '輸入=「默認」' 當我運行該腳本,它給了我 'thisDefault「' – saiyan101

+0

@ saiyan101是啊,那是'與string.replace(to_replace,replace_with行爲)''''''''''''''''''''''每一次出現'to_replace'都被替換爲'replace_with'。如果你想在*'input ='''後替換內容*,你需要使用一個正則表達式。 – msvalkon