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

标签 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) 

提前致谢!

最佳答案

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

相关文章:

python - 通过放置一个列表中的第 n 个项目和另一个列表中的其他项目来合并 Python 中的列表?

python - 如何在Python中调用列表中下一个/上一个对象的函数

python - 如何使用 pytest 检查函数返回的 False 值

java - 如何在java代码中指定log4j2的日志目录?

php - 将随机文件下载为 zip

python - 使用 OneToOneField 时 Django 模型 u'id' 发生冲突

python - SFrame,Python 中的图形实验室

directory - 如何从 SAS 中的目录和子目录(包括路径和数据集名称)获取所有列名称

python - Python中的目录树列表

IOS——文件和文件夹管理