【发布时间】:2015-03-02 20:14:04
【问题描述】:
'file.txt' 中有这样一行字:
memcpy(buffer, "", 64)
我想编写一个 Python 脚本来读取这个file.txt 并在其中找到这一行。然后,它继续在该行的两个引号 ("") 之间插入一个特定字符串(存储在变量 'data' 中)。
例如,如果变量 data 包含值 'foo bar',则 Python 脚本将修改该行为:
memcpy(buffer, "foo bar", 64)
这是我尝试过的:
data = "foo bar"
with open('file.txt') as in_file:
in_buffer = in_file.readlines()
with open('new.txt', "w") as out_file:
for line in in_buffer:
if line == 'memcpy(buffer, "", 64)':
out_file.write("memcpy(buffer, \"data\", 64)")
else:
out_file.write(line)
它不起作用,因为它在 new.txt 中创建了完全相同的文件副本,而没有进行任何修改。
【问题讨论】:
-
@PeterWood 我确实看过这些问题。参考这些答案后,我确实编写了代码。但是,我无法让它工作。
-
该行的末尾会有一个换行符。
line == 'memcpy(buffer, "", 64)\n' -
$ sed 's/^wrong line$/wrong corrected line/' < file.txt > file.new