Infile替换清空文件

Infile replacement empties the file

我试图替换 html 的一些行

但结果是空文件。

我正在检查行是否有特定字符串并尝试替换它

with fileinput.FileInput(bmark_file, inplace=True, backup='.bak') as file:
    for line in file :
        unique="id="+core
        if unique in line:
            print(line.replace(link['href'], vboard[core.lower()]['benchmarks.tls']), end='')

实际上 infile 模块不应该清空文件,即使条件失败

对此的任何输入都会有所帮助

只有 print 在你的测试通过时,所以任何没有通过测试的行都不会在新文件中结束 ( FileInputinplace=True 将原始文件替换为您向 sys.stdout 发送的任何内容;如果您不发送任何内容,它就不会写入任何内容)。如果想让其他行不变通过,需要在else的情况下输出原来的行:

with fileinput.FileInput(bmark_file, inplace=True, backup='.bak') as file:
    for line in file :
        unique="id="+core
        if unique in line:
            print(line.replace(link['href'], vboard[core.lower()]['benchmarks.tls']), end='')
        else:
            print(line, end='')  # Or just sys.stdout.write(line)

您的文件最终为空这一事实意味着 unique in line 测试从未通过,因此您可能期待不存在的数据。