python - Infile 替换清空文件
问题描述
我试图就地替换一些 html 行
但它导致空文件。
我正在检查 line 是否有特定的字符串并尝试替换它
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
在测试通过时才 ing,因此任何未通过测试的行都不会出现在新文件中(FileInput
withinplace=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
测试从未通过,因此您可能期望不存在的数据。
推荐阅读
- javascript - 在 express 中将新的 select2 选项标签写入本地数据库
- http - 是否所有 cookie 都在 HTTP 请求中传递?
- apache-kafka - kafka 代理是否需要在消费者可以读取之前提交到磁盘
- cheerio - 使用汇总构建时运行时出现 Cheerio 错误,依赖项解析似乎是问题所在
- c# - 如何在 ASP.NET Core 3 预览版中使用 Lamar 2?
- python - numpy - 切片一个 3d 数组,如何在某个轴上应用两个不同长度的切片
- java - 使用 reactor 的 Flux.buffer 进行批处理仅适用于单个项目
- ios - 在表格视图单元格中添加向下箭头
- vue.js - 带有消息的 Vue 启动模式
- java - 作为库作者,期望用户根据情况将 null 传递给方法参数是不是很糟糕?