1

在文件的开头,我使用以下方法指定了路径:

path = r"C:\Documents\Data"
os.chdir(path)

稍后,我想遍历文件夹中的子Data文件夹。此文件夹包含2018,其中包含Level2A. 我这样做:

for root, subdirectories, files in os.walk(path):
        for filename in subdirectories:
            if filename.endswith('.SAFE'):
                print(filename)
                print(os.getcwd())

打印子文件夹的名称时,它可以工作;它打印folder_name.SAFE。但是,当我想打印它当前正在查看的路径时,我得到以下信息:

print(os.getcwd())
>>> C:\Documents\Data

为什么我没有得到C:\Documents\Data\2018\Level2A我打印的文件是谁的?我必须改变什么才能得到这个?

4

2 回答 2

2

os.getcwd()返回当前工作目录,即您更改为使用的目录os.chdir()

要获取文件的文件夹,我们可以查看以下文档os.walk()

它产生一个 3 元组 (dirpath, dirnames, filenames)

要获得 dirpath 中文件或目录的完整路径(以 top 开头),请执行 os.path.join(dirpath, name)。

因此,在您的情况下,请尝试:

print(os.path.join(root, filename))

另外,查看较新的Pathlib模块

于 2022-02-11T14:48:55.483 回答
1

每次执行 os.getcwd() 时,都会得到当前目录。如果您需要在其文件名上包含“.SAFE”的文件名的完整路径,则需要打印如下内容:

for root, subdirectories, files in os.walk(path):
    for filename in subdirectories:
        if filename.endswith('.SAFE'):
            print(filename)
            print(root+"/"+filename)
于 2022-02-11T14:59:04.270 回答