【发布时间】:2018-08-23 15:27:43
【问题描述】:
我有一个主文件和一组附属文件,但我不知道附属文件的名称,直到我查看主文件。
主文件包含两列:一些数据和第二个文件名,例如,
data1_from_master hidden_file1
data2_from_master hidden_file2
data3_from_master hidden_file1
data4_from_master hidden_file3
data5_from_master hidden_file1
我想要做的是创建一个生成器,它从主文件的第一列生成一个元素,然后从一个子文件中生成一行数据。例如,
data1_from_master line1_from_file1
data2_from_master line1_from_file2
data3_from_master line2_from_file1
data4_from_master line1_from_file3
data5_from_master line3_from_file1
主文件的行数等于所有子文件的行数之和,所以一旦主文件被遍历完,所有的子文件也会被遍历完。
如果我只有两个要打开的文件,并且我事先知道它们的名称,我可以执行类似的操作。
with open(master_file, 'r') as a, open(hidden_file, 'r') as b:
for line1, line2 in zip(a, b):
yield (line1, line2)
但难题是,在我读取主文件的给定行之前,我不知道要读取哪个子文件。然后尝试构建一个包含多个不同文件的行的生成器会增加复杂性。
【问题讨论】:
标签: python file nested generator yield