0

我试图在 Django 中附加一个文件来进行字符串替换,由于某种原因它没有写入文件。阅读没有问题。

视图.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
4

2 回答 2

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)

你的例子根本不起作用。

请阅读文件对象string.replace的文档。File不是内置函数,str.replace不会就地替换(字符串是不可变的),并且mydiscover.closedis 用于告知文件是否已关闭,而不是用于关闭打开的文件。

引发您的原始错误是因为您试图从使用a代表附加的标志打开的文件中读取行。

于 2013-04-17T12:32:46.880 回答
0

您必须使用 'r' 标志打开它,以便阅读。

open('/home/me/dev/Django/rulebase/result.rb', 'r')
于 2013-04-17T12:18:14.197 回答