如何打开多个目录并读取里面的文件

How to open multiple directories and read the files inside

我需要将文本文件与其他两个文件进行比较,然后将结果作为输出。因此,我自学了足够的知识来编写以下脚本,该脚本可以正常工作并比较特定目录中的所有文件,但是我有多个目录,其中包含文本文件。我需要的是比较所有目录中的所有文本文件,并为每个目录创建一个输出文件。有没有办法改进下面的代码来做到这一点:

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]

这会将不同的输出文件命名为 citation0.txt,但您可以根据需要使用其他格式,只需更改该名称的声明方式即可。

如果您希望每个 citation.txt 进入实际目录,只需将您的代码更改为:

for folder in directories:
    citation = os.path.join(folder, "citation.txt")
    sys.stdout = open(citation, "w")

这将为一个新的 citation.txt 文件创建一个路径,其中包含循环运行时的每个目录。确保 import os 在文件的开头,如果你还没有的话。