首页 > 解决方案 > 为什么循环在写入文件时执行两次

问题描述

我有2个文件abc.txtcde.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

标签: pythonfile

解决方案


如果您更改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)

推荐阅读