python 如何并行读取两个文件?
How to read two files in parallel with python?
我有两个非常长的文件(超过 100 万行),它们的行数完全相同,并且逐行相互对应。我想逐行并行读取两个文件,并根据行的内容写入一个新文件。
更具体地说,第一个文件看起来像
<text id="Jamilja03" title="Жамиля" title_english="Jamilja" year="1959" genre="novelette" author="Chyngyz Aitmatov>
<s>
Жамийла
Ар
дайым
бир
жакка
жол
жүрөрдө
,
мен
ушул
алкагы
жөнөкөй
жыгачтан
жасалган
сүрөттүн
алдына
келип
турам
.
</s>
第二个文件看起来像
<^text/*text$ ^id/*id$=^"/"<quot>$^Jamilja03/*Jamilja03$^"/"<quot>$ ^title/*title$=^"/"<quot>$^Жамиля/*Жамиля$^"/"<quot>$ ^title/*title$_^englis/*english$=^"/"<quot>$^Jamilja/*Jamilja$^"/"<quot>$ ^year/*year$=^"/"<quot>$^1959/1959<num>$^"/"<quot>$ ^genre/*genre$=^"/"<quot>$^novelette/*novelette$^"/"<quot>$ ^author/*author$=^"/"<quot>$^Chyngyz/Chyngyz<np><unk>$ ^Aitmatov/*Aitmatov$>
<^s/*s$>
^Жамийла/*Жамийла$
^Ар дайым/ар дайым<adv>$
^бир/бир<num>$
^жакка/жак<n><dat>$
^жол/жол<adv>$
^жүрөрдө/жүр<v><iv><ger_fut><loc>$
^,/,<cm>$
^мен/мен<prn><pers><p1><sg><nom>$
^ушул/ушул<det><dem>$
^алкагы/алкак<n><px3sp><nom>$
^жөнөкөй/жөнөкөй<adj>$
^жыгачтан/жыгач<n><abl>$
^жасалган/жаса<v><tv><pass><prc_past>$
^сүрөттүн/сүрөт<n><gen>$
^алдына/алд<n><px3sp><dat>$
^келип/кел<v><iv><prc_perf>$
^жүрөрдө/жүр<v><iv><ger_fut><loc>$
^,/,<cm>$
^мен/мен<prn><pers><p1><sg><nom>$
^ушул/ушул<det><dem>$
^алкагы/алкак<n><px3sp><nom>$
^жөнөкөй/жөнөкөй<adj>$
^жыгачтан/жыгач<n><abl>$
^жасалган/жаса<v><tv><pass><prc_past>$
^сүрөттүн/сүрөт<n><gen>$
^алдына/алд<n><px3sp><dat>$
^келип/кел<v><iv><prc_perf>$
^турам/тур<vaux><aor><p1><sg>$
^./.<sent>$
<^///<sent>$^s/*s$>
我一般想使用第二个文件中的行(进行一些重新格式化),但要在某些行中保留 XML 标记,其中包含第一个文件中的 XML 标记 XML 个标签。
像
这样天真的方法
for line_a in file_a and line_b in file_b:
不适用于 python。
已经有一个标题相似的问题,即 How to read two files in parallel line by line in python,但建议的答案(将一个文件读入列表或字典)不适合我的任务。我真的很想从这两个文件中读取行,而不是决定进一步处理,然后忘记它们。
对已经是生成器的文件使用zip
:
for la, lb in zip(file_a, file_b):
...
我有两个非常长的文件(超过 100 万行),它们的行数完全相同,并且逐行相互对应。我想逐行并行读取两个文件,并根据行的内容写入一个新文件。
更具体地说,第一个文件看起来像
<text id="Jamilja03" title="Жамиля" title_english="Jamilja" year="1959" genre="novelette" author="Chyngyz Aitmatov>
<s>
Жамийла
Ар
дайым
бир
жакка
жол
жүрөрдө
,
мен
ушул
алкагы
жөнөкөй
жыгачтан
жасалган
сүрөттүн
алдына
келип
турам
.
</s>
第二个文件看起来像
<^text/*text$ ^id/*id$=^"/"<quot>$^Jamilja03/*Jamilja03$^"/"<quot>$ ^title/*title$=^"/"<quot>$^Жамиля/*Жамиля$^"/"<quot>$ ^title/*title$_^englis/*english$=^"/"<quot>$^Jamilja/*Jamilja$^"/"<quot>$ ^year/*year$=^"/"<quot>$^1959/1959<num>$^"/"<quot>$ ^genre/*genre$=^"/"<quot>$^novelette/*novelette$^"/"<quot>$ ^author/*author$=^"/"<quot>$^Chyngyz/Chyngyz<np><unk>$ ^Aitmatov/*Aitmatov$>
<^s/*s$>
^Жамийла/*Жамийла$
^Ар дайым/ар дайым<adv>$
^бир/бир<num>$
^жакка/жак<n><dat>$
^жол/жол<adv>$
^жүрөрдө/жүр<v><iv><ger_fut><loc>$
^,/,<cm>$
^мен/мен<prn><pers><p1><sg><nom>$
^ушул/ушул<det><dem>$
^алкагы/алкак<n><px3sp><nom>$
^жөнөкөй/жөнөкөй<adj>$
^жыгачтан/жыгач<n><abl>$
^жасалган/жаса<v><tv><pass><prc_past>$
^сүрөттүн/сүрөт<n><gen>$
^алдына/алд<n><px3sp><dat>$
^келип/кел<v><iv><prc_perf>$
^жүрөрдө/жүр<v><iv><ger_fut><loc>$
^,/,<cm>$
^мен/мен<prn><pers><p1><sg><nom>$
^ушул/ушул<det><dem>$
^алкагы/алкак<n><px3sp><nom>$
^жөнөкөй/жөнөкөй<adj>$
^жыгачтан/жыгач<n><abl>$
^жасалган/жаса<v><tv><pass><prc_past>$
^сүрөттүн/сүрөт<n><gen>$
^алдына/алд<n><px3sp><dat>$
^келип/кел<v><iv><prc_perf>$
^турам/тур<vaux><aor><p1><sg>$
^./.<sent>$
<^///<sent>$^s/*s$>
我一般想使用第二个文件中的行(进行一些重新格式化),但要在某些行中保留 XML 标记,其中包含第一个文件中的 XML 标记 XML 个标签。
像
这样天真的方法for line_a in file_a and line_b in file_b:
不适用于 python。
已经有一个标题相似的问题,即 How to read two files in parallel line by line in python,但建议的答案(将一个文件读入列表或字典)不适合我的任务。我真的很想从这两个文件中读取行,而不是决定进一步处理,然后忘记它们。
对已经是生成器的文件使用zip
:
for la, lb in zip(file_a, file_b):
...