【问题标题】:Script to search and replace strings in a flie用于搜索和替换文件中的字符串的脚本
【发布时间】:2014-04-29 11:26:26
【问题描述】:

我是 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 并将内容加载到内存中的两个临时文件infileoutfile。字典类型变量replacements 就像一个数组来保存“查找”和“替换”字符串。

它在每一行上循环,然后一个嵌套循环向下行并加载变量 src 和 target 以及替换变量的内容(如数组);然后写行,直到写完所有行。

我的理解还差得远吗?

in_file.conf 和脚本在同一个目录下,会不会只是找不到 in_file.conf 并写入一个空白文件?

我告诉过你我是 python 新手。

亲切的问候,

雷吉。

【问题讨论】:

    标签: python search replace


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-03-14
        • 2021-07-08
        • 2023-02-02
        • 2011-02-17
        • 2020-05-12
        • 1970-01-01
        • 2010-10-13
        • 2017-01-06
        • 1970-01-01
        相关资源
        最近更新 更多