【发布时间】: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