我需要将文本文件与其他两个文件进行比较,然后将结果作为输出。因此,我自学了足够的知识来编写以下脚本,该脚本工作正常并比较特定目录中的所有文件,但是我有多个目录,其中包含文本文件。我需要的是比较所有目录中的所有文本文件,并为每个目录提供一个输出文件。有没有办法改进下面的代码来做到这一点:
import glob
import os
import sys
sys.stdout = open("citation.txt", "w")
for filename in glob.glob('journal*.txt'):
f1 = open(filename,'r')
f1data = f1.readlines()
f2 = open('chem.txt')
f2data = f2.readlines()
f3 = open('bio.txt')
f3data = f3.readlines()
chem = 0
bio = 0
total = 0
for line1 in f1data:
i = 0
for line2 in f2data:
if line1 in line2:
i+=1
total+=1
chem+=1
if i > 0:
print 'chem ' + line1 + "\n"
for line3 in f3data:
if line1 in line3:
i+=1
total+=1
bio+=1
if i > 0:
print 'bio ' + line1 + "\n"
print filename
print total
print 'bio ' + str(bio)
print 'chem ' + str(kimya)
提前致谢!
最佳答案
只需使用目录列表和 for 循环
directories = ['folder1','folder2',...]
for i,folder in enumerate(directories):
sys.stdout = open("citation{}.txt".format(i), "w")
...
[put the rest of your code here]
这会将不同的输出文件命名为 itation0.txt
,但如果您愿意,您也可以采用其他格式,只需更改该名称的声明方式即可。
如果您希望每个 itation.txt
进入实际目录,只需将代码更改为:
for folder in directories:
citation = os.path.join(folder, "citation.txt")
sys.stdout = open(citation, "w")
这将为循环运行时的每个目录创建新的 itation.txt
文件的路径。如果您尚未在文件开头导入 os,请确保导入 os。
关于python - 如何打开多个目录并读取里面的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31384337/