gpt4 book ai didi

python - 如何逐行替换(更新)文件中的文本

转载 作者:太空狗 更新时间:2023-10-29 17:58:20 25 4
gpt4 key购买 nike

我试图通过读取每一行来替换文本文件中的文本,测试它,然后在需要更新时写入。我不想另存为新文件,因为我的脚本已经先备份文件并对备份进行操作。

这是我目前所拥有的...我从 os.walk() 获得 fpath 并且我保证路径匹配 var 正确返回:

fpath = os.path.join(thisdir, filename)
with open(fpath, 'r+') as f:
for line in f.readlines():
if '<a href="' in line:
for test in filelist:
pathmatch = file_match(line, test)
if pathmatch is not None:
repstring = filelist[test] + pathmatch
print 'old line:', line
line = line.replace(test, repstring)
print 'new line:', line
f.write(line)

但最终发生的是,我只得到了几行(请注意,已正确更新,但在文件的前面重复了)更正。我认为这是一个范围界定问题,afaict。

*另外:我想知道如何只在匹配的第一个实例上替换文本,例如,我不想匹配显示文本,只匹配底层 href。

最佳答案

首先,无论是否匹配模式,您都需要写入该行。否则,您只会写出匹配的行。

其次,在读取行和写入结果之间,您需要截断文件(可以 f.seek(0) 然后 f.truncate()),或关闭原始文件并重新打开。选择前者,我最终会得到类似的东西:

fpath = os.path.join(thisdir, filename)
with open(fpath, 'r+') as f:
lines = f.readlines()
f.seek(0)
f.truncate()
for line in lines:
if '<a href="' in line:
for test in filelist:
pathmatch = file_match(line, test)
if pathmatch is not None:
repstring = filelist[test] + pathmatch
line = line.replace(test, repstring)
f.write(line)

关于python - 如何逐行替换(更新)文件中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4778697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com