用于搜索和替换flie中的字符串的脚本

时间:2014-04-29 11:26:26

标签: python search replace

我是Python的新手,我正在努力理解为什么这个程序

#!/usr/bin/env python
infile = open('/usr/src/scripts/in_file.conf')
outfile = open('/usr/src/scripts/in_file.conf', 'w')

replacements = {'abcd':'ABCD', '1234':'bob'}

for line in infile:
    for src, target in replacements.items(): 
        line = line.replace(src, target)
    outfile.write(line)
infile.close()
outfile.close()
脚本执行后

导致空白文件。

原来的in_file.conf是:

testfile of junk

abcd
******************

1234

*************

如果我错了,请纠正我,但我理解脚本会打开in_file.conf并将内容加载到内存中的两个临时文件infile& outfile。字典类型变量replacements就像一个数组,用于保存“查找”和“替换”字符串。

它遍历每一行,然后一个嵌套的循环沿着该行向下并加载变量src和target与替换变量的内容(如数组);然后写入该行,直到写完所有行。

我的理解是否可以解决?

in_file.conf与脚本位于同一目录中,是否只是找不到in_file.conf并写入空白文件?

我告诉过你我是python的新手。

亲切的问候,

雷吉。

2 个答案:

答案 0 :(得分:1)

请为infile和outfile使用不同的文件。以写入模式打开文件将删除其内容。因为您的infile和outfile是相同的文件,所以您的文件内容将被删除,并且您的for循环永远不会运行

答案 1 :(得分:1)

问题是您在读取模式下打开同一个文件,然后在写入模式下打开(截断文件)。理想情况下,您应该为输出提供不同的文件,但如果您需要将输出放在同一个文件中,则可以删除旧文件并在之后重命名新文件。