0

我想在同一个文件中替换 2 个值。我想搜索 'input="Default"' 并将其值替换为 'This' 并将 pattern="Default" 替换为 'Now'。我创建了 tmp 表单,我的代码在其中读取值并写入另一个文件。对 django 和 python 来说是新手。目前它正在写入一个值。

视图.py

with open('/home/usr/dev/Django/rulebase/test_pattern_tmp.rb', 'r') as pattern_reading:
   lines = [line.replace('pattern = "Default"','Now') for line in pattern_reading.readlines()]
   lines = [line.replace('input = "Default"','This') for line in pattern_reading.readlines()]
with open('/home/usr/dev/Django/rulebase/test_pattern.rb', 'w') as pattern_reading:
   pattern_reading.writelines(lines)
4

2 回答 2

1

解决方案是:

with open('/home/usr/dev/Django/rulebase/test_pattern_tmp.rb', 'r') as pattern_reading:
    with open('/home/usr/dev/Django/rulebase/test_pattern.rb', 'w') as pattern_writing:
        for line in pattern_reading:
            out=line.replace('pattern="Default"','Now').replace('input="Default"','This')
            pattern_writing.write(out)

你好,有两个问题:

  1. 您正在将整个文件读入内存(这不一定是错误)
  2. 一个文件对象可以被认为是一个迭代器。一旦您在第一次迭代中到达文件末尾,第二次迭代什么也不做
于 2013-04-18T09:17:24.947 回答
0

它写一个值,因为您的lines列表仅包含最后一个替换;你需要lines在你替换的第二个语句中循环input = "Default"

于 2013-04-18T08:16:53.930 回答