【问题标题】:Traversing a file-system directory structure遍历文件系统目录结构
【发布时间】:2021-10-08 21:31:24
【问题描述】:

我正在尝试在目录中的某些文件中做一些工作。我正在尝试使用的基本结构是文件夹-> 子文件夹-> 我需要访问的文件。 data 包含数百个子文件夹,我正在尝试访问每个子文件夹,在其中找到以 'params' 结尾的文件,现在只需阅读内容。我的代码如下:

import os
for sub_folder in os.scandir('data'):
    os.chdir(sub_folder)
    for file in os.scandir(sub_folder):
        print(file.name)
        if(file.name.endswith('params')):
            with open(file.name, 'r') as f:
                data = f.read()

我收到了一个FileNotFoundError,它告诉我路径'data\\\run.0' 不存在。我已经确认'run.0'data 中的第一个子文件夹,所以我很困惑的是路径实际上并不存在。

我知道当我尝试更改目录时会发生错误,所以我怀疑我遍历 data 文件夹的方式不是正确的做法。我知道os.scandir 给出了一个DirEntry 对象,这就是变量sub_folder 的含义,但这不是更改目录函数的有效输入吗?

【问题讨论】:

  • 您不会在每次循环后将 dir 更改回基目录,所以它是否会在第二个找到的第一个文件夹中查找?
  • 在第二个 scandir 循环中,您不是 chdir' 进入子文件夹,因此当前目录不是 file.name 所在的目录。

标签: python directory scandir chdir


【解决方案1】:

你可以使用os.walk,但我更喜欢使用glob:见How to use Glob() function to find files recursively in Python?

【讨论】:

  • 为了立即对读者有所帮助(并避免link-rot),至少直接提供解决方案摘要的答案是首选,并带有用于提供其他信息的链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
  • 2014-09-29
  • 1970-01-01
相关资源
最近更新 更多