2013-04-17 80 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