【发布时间】:2020-06-16 05:16:58
【问题描述】:
我有一个目录,文件如下:
ab_list
bd_list
cd_list
mno_list
hk_list
pd_list
我在此目录之外还有另一个名为 testfile 的文件:
abc
que nw
ab_list ON 8
gs_list ON 9
hk_list OFF 9
bd_list ON 7
cd_list OFF 6
fr_list ON 5
mno_list ON 4
pq_list OFF 6
jk_list ON 7
pd_list OFF 8
我想比较 2 和所有带有文件名和 ON 的文件(如果匹配),它们的内容应该合并到一个名为 merge_file 的新文件中。与 testfile 匹配但为 OFF 的其他文件,其文件名应打印在 new_file 中。 ab_list bd_list 和 mno_list 的内容应该合并到 top_file 中
这是我到目前为止尝试过的代码:
from glob import glob
test_file_directory = "C:\\Users\\User\\Desktop\\Folder\\"
files1 = glob("*.txt")
with open(test_file_directory+"testfile.txt","r") as f:
files2 = [' '.join([l.split()[0],l.split()[1]]) for l in f.readlines()[3:]]
for f1 in files1:
for f2 in files2:
if f1[:-4]+' ON' == f2:
#print('match')
with open('merge_file.txt','a') as a:
with open(f1,'r') as r:
a.write(r.readlines()[1:]+'\n')
elif f1[:-4]+' OFF' == f2:
#print('match')
with open('match_file.txt','a') as a:
with open(f1,'r') as r:
a.write(f"{f2} {len(r.readlines())}\n")
elif f1[:-4]+' ON' == f2:
#print('match')
with open('match_file.txt','a') as a:
with open(f1,'r') as r:
a.write(f"{f2} {len(r.readlines())}\n")
我希望写入 merge_file 的文件内容开始从文件的第二行而不是第一行读取,并且 match_file 旁边还有带有 ON 的文件名(它从第一个 elif 开始为 OFF)
a.write(r.readlines()[1:]+'\n' 这一行给出一个错误,说它是一个字符串而不是一个列表。
【问题讨论】:
-
您可以创建一个迭代器 - 使用
next()调用,然后继续使用for loop中的其余值。 -
你能帮我写代码吗
-
我应该如何在这段代码中使用它
-
我可能会有点,但我会试一试
-
你能不能也看看提到的第二个问题
标签: python python-3.x merge compare