如何打开多个目录并读取

时间:2015-07-13 13:10:29

标签: python directory

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

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) 

提前致谢!

1 个答案:

答案 0 :(得分:1)

只需使用目录列表和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