Python Django项目未写入文件
我试图在Django中附加一个文件,以进行字符串替换,但由于某些原因,它不会写入文件。我在阅读方面没有问题 views.pyPython Django项目未写入文件,python,django,Python,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')
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
您必须使用“r”标志打开它,以便阅读
open('/home/me/dev/Django/rulebase/result.rb', 'r')
以下内容将替换文件的内容:
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
不是内置函数,str.replace
不会就地替换(字符串是不可变的),而mydiscover.closed
用于告知文件是否已关闭,而不是关闭打开的文件
引发原始错误的原因是,您正试图从使用
a
标志(表示追加)打开的文件中读取行。嗯,open(…,'a')
打开是为了写入(追加),而不是读取。但是,您的代码没有多大意义。您试图实现的具体目标是什么?您是否试图将文件内容复制到另一个文件mydiscover
替换部分内容?我希望代码打开文件搜索字符串,然后替换文件中的字符串。您可以替换字节序列,但不能更改替换序列的长度。改为写一个新文件。谢谢你在结尾我想它做的是删除整行添加,然后用“this”替换它。之后需要删除不需要的字符。当我运行脚本时,文件包含input=“Default”
当我运行脚本时,它会给我thisDefault”
@saiyan101是的,这就是string.replace的行为(要替换,用替换)
。每次出现的to_replace
都将替换为replace_with
。如果要替换input=“”
之后的内容,则需要使用正则表达式。