成对打开两个文件-Python

时间:2018-08-09 12:58:01

标签: python list compare

嗨,我是python的新手,需要一些帮助。

我的问题是,我有一个充满文本文件的文件夹(文件夹中有列表),其中两个文件夹属于彼此,需要阅读和比较。

包含许多文件的文件夹:File1_in.xlo,File1_out.xlo,File2_in.xlo,File2_out.xlo,...

->因此File1_in.xlo和File1_out.xlo属于同一类,需要进行比较。

我已经可以附加“ in-Files”(或“ out-Files”)列表,然后进行比较,但是由于有许多Files,所以列表变得很长(成千上万个条目),因此想法是成对比较文件或列表。

我的第一次尝试如下:

import os

for filename in sorted(os.listdir('path')):
    if filename.endswith('in.xlo'):
        with open(os.path.join('path', filename)) as inn:
            lines = inn.readlines()
            for x in lines:
                temperatureIn = x.split()[4] 

    if filename.endswith('out.xlo'):
        with open(os.path.join('path', filename)) as outt:
            lines = outt.readlines()
            for x in lines:
                temperatureOut = x.split()[4]   #4. column in list

所以,问题是,正如您所看到的,在我将它们与“ temperatureOut”进行比较之前,“ temperatureIn”总是被覆盖。我认为/希望必须有一种可以同时打开两个文件以比较列表条目的方法。

希望您能理解我的问题,并且有人可以帮助我。

谢谢

2 个答案:

答案 0 :(得分:0)

使用zip来成对访问文件内和文件外

files = sorted(os.listdir('path'))
in_files = [fname for fname in files if fname.endswith('in.xlo')]
out_files = [fname for fname in files if fname.endswith('out.xlo')]
for in_file, out_file in zip(in_files, out_files):
    with open(os.path.join('path', in_file)) as inn, open(os.path.join('path', out_file)) as outt:
        # Do whatever you want

答案 1 :(得分:0)

将它们添加到for循环之前创建的列表中,例如:

 temps_in =[]     
 for x in lines:
     temperatureIn = x.split()[4] 
     temps_in.append(temperatureIn)

对温度进行同样的处理,然后比较两个列表