嗨,我是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”总是被覆盖。我认为/希望必须有一种可以同时打开两个文件以比较列表条目的方法。
希望您能理解我的问题,并且有人可以帮助我。
谢谢
答案 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)
对温度进行同样的处理,然后比较两个列表