Python循环不移动到下一个文件

Posted

技术标签:

【中文标题】Python循环不移动到下一个文件【英文标题】:Python loop not moving to next file 【发布时间】:2018-06-24 19:25:13 【问题描述】:

我正在尝试遍历一个目录,搜索标题中包含“摘要”一词的所有文件。找到文件后,我想打开文件并检索存在“审核名称”和“已验证命中”的行。另外,检索了文件的目录路径。

我当前的代码搜索包含 3 个摘要文件的目录。查找目录路径和文件名,但仅从第一个文件中获取内容,并将该信息打印 3 次。

import os
data_dir = "<dir with data>"

for dirpath, dirnames, filenames in os.walk(data_dir):
    for name in filenames:
        if 'Summary' in name:
            ofile = open(name, "r+")
            lines = ofile.readlines()
            ofile.close()
            for line in lines:
                if 'Audit Name:' in line:
                    audit_name = line
                if 'Verified Hits' in line:
                    verified_hits = line
            print(audit_name + verified_hits)

【问题讨论】:

您确定没有产生结果的两个文件包含所需的行吗?我建议您在循环开始时重置 audit_name 和 verify_hits。 【参考方案1】:
ofile = open(name, "r+")

Name 只是文件名,不包括路径。所以你打开相同的路径 3 次。

试试

ofile = open(os.path.join(dirpath, name), "r+")

【讨论】:

嗯,我以为OP似乎说文件在同一目录中。 我认为它在那个目录或子目录中。否则我不确定他为什么会使用os.walk,但你可能是对的。 是的,我很确定你已经找到了问题。 感谢您提出这个问题,以防 OP 'os.path.join' 模块正是我所需要的。感谢您的反馈。

以上是关于Python循环不移动到下一个文件的主要内容,如果未能解决你的问题,请参考以下文章

imageJ 上的宏,循环不移动到下一个 ROI

(相机校准)如何让我的循环读取图像只等待 10 秒,如果没有任何东西移动到下一张图像?

如何在Matlab的for循环中移动到下一个迭代

在 for 循环中不转换到下一个

PHP 和 XML。使用 PHP 循环遍历 XML 文件

ifstream - 移动到下一个单词