python - 为什么循环在写入文件时执行两次
问题描述
我有2个文件abc.txt
,cde.txt
abc.txt 的内容是“这是 abc 文件” cde.txt 的内容是“这是 cde 文件”
我正在尝试写入文件。但是内容写了两次下面是代码
in_files = ['abc.txt','cde.txt']
out_files = ['abc_output.txt','cde_output.txt']
read_dict = {}
for file in in_files:
with open(file,'r') as read_file:
lines = read_file.readlines()
read_dict[file] = lines
read_dict
for k,v in read_dict.items():
for out in out_files:
with open(out,'w+') as write_file:
for i in v:
print(i)
输出
This is abc file
This is abc file
This is cde file
This is cde file
预期的
This is abc file
This is cde file
解决方案
如果您更改print(i)
为print('writing to', write_file, i)
,您会看到第一次打印“ This is abc file ”是针对您写入abc_output.txt的时间,第二次打印是针对您将输出到cde_output.txt的时间。
您的预期输出只会在每个文件中显示一次。这是你想要的,还是你想要“这是 abc 文件”只输出到abc_output.txt和“这是 cde 文件”只输出到cde_output.txt?如果是这种情况,你会想做这样的事情:
in_files = ['abc.txt','cde.txt']
out_files = ['abc_output.txt','cde_output.txt']
read_dict = {}
for in_f, out_f in zip(in_files, out_files):
with open(in_f,'r') as read_file:
lines = read_file.readlines()
with open(out_f,'w+') as write_file:
#write_file.writelines(lines)
print(lines)
推荐阅读
- c++ - Qt QML - QModBus 读取被 QML BusyIndicator/Animation 损坏 - SingleThread
- reactjs - firestore Geopoints 为什么不能将类调用为函数错误
- visual-studio-code - Visual Studio Code:关闭后重新打开远程工作区
- java - 从链表中删除重复的元素(整数类型)
- oracle - FDA查询下发生了什么?
- python - SQL Server命令以json形式返回查询结果,不适用于python
- mapstruct - MapStruct 源和目标属性查找
- apache-flink - 进行表连接时如何获得最后一个结果(在flink sql中使用toRetractStream
- powershell - PowerShell 没有自动导入功能
- javascript - 关于 typescript 中的类型、映射和子类的问题