如何使用Python的for循环逐行交替打印两个TXT文件
解决两个文件逐行交替打印的问题
问题原因
你写的嵌套循环逻辑错误:外层遍历第一个文件的每一行时,内层会把第二个文件的所有行完整遍历一遍,导致先输出第一个文件的全部内容,最后才处理第二个文件的最后一行,完全不符合交替打印的需求。另外代码里还有小问题:sleep(1)应该写成time.sleep(1),且文件打开后没有正确关闭。
解决方案
情况1:两个文件行数相同
用zip函数同时迭代两个文件的行,每次各取一行交替打印,同时用with语句自动管理文件(避免手动关闭的麻烦):
import time with open("q1", "r") as f1, open("q2", "r") as f2: for line1, line2 in zip(f1, f2): print(line1, end='') # end=''避免重复换行 time.sleep(1) print(line2, end='') time.sleep(1)
情况2:两个文件行数不同
如果两个文件行数不一致,用itertools.zip_longest可以处理剩余的行(行数多的文件剩下的行会继续打印):
import time from itertools import zip_longest with open("q1", "r") as f1, open("q2", "r") as f2: # fillvalue=''表示缺失的行用空字符串填充 for line1, line2 in zip_longest(f1, f2, fillvalue=''): if line1: print(line1, end='') time.sleep(1) if line2: print(line2, end='') time.sleep(1)
效果说明
运行修正后的代码,会先打印q1的第一行,等待1秒后打印q2的第一行,再等待1秒打印q1的第二行,以此类推,完全符合你想要的交替输出效果。
内容的提问来源于stack exchange,提问作者Shyamanta Boruah
相关产品推荐
相关产品推荐

