我是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的新手。
亲切的问候,
雷吉。
答案 0 :(得分:1)
请为infile和outfile使用不同的文件。以写入模式打开文件将删除其内容。因为您的infile和outfile是相同的文件,所以您的文件内容将被删除,并且您的for循环永远不会运行
答案 1 :(得分:1)
问题是您在读取模式下打开同一个文件,然后在写入模式下打开(截断文件)。理想情况下,您应该为输出提供不同的文件,但如果您需要将输出放在同一个文件中,则可以删除旧文件并在之后重命名新文件。