我试图在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
答案 0 :(得分: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 objects和string.replace的文档。 File
不是内置函数,str.replace
不会就地替换(字符串是不可变的)而mydiscover.closed
用于判断文件是否已关闭,不是< / em>用于关闭打开的文件。
您的原始错误被引发了,因为您试图从使用a
标志打开的文件中读取行,该标志代表追加。
答案 1 :(得分:0)
您必须使用'r'标志打开它才能阅读。
open('/home/me/dev/Django/rulebase/result.rb', 'r')