Python - 获取目录中所有文件和子文件夹的相对路径

54 投票
7 回答
74464 浏览
提问于 2025-04-15 13:13

我正在寻找一种好的方法来获取特定文件夹内文件和(子)文件夹的相对路径。

我现在的方法是使用 os.walk()。这个方法可以用,但我觉得它不是很“python风格”。

myFolder = "myfolder"
fileSet = set() # yes, I need a set()

for root, dirs, files in os.walk(myFolder):
    for fileName in files:
        fileSet.add(root.replace(myFolder, "") + os.sep + fileName)

有没有其他的建议呢?

谢谢!

7 个回答

3

你现在做的事情是完全正确的,我觉得应该这样做。不过为了提供一个不同的选择,这里有一个尝试的例子。

import os

def getFiles(myFolder):
    old = os.getcwd()
    os.chdir(myFolder)

    fileSet = set()

    for root, dirs, files in os.walk(""):
        for f in files:
            fileSet.add(os.path.join(root, f))

    os.chdir(old)
    return fileSet
11

这段代码是用来处理一些数据的。它的主要目的是从一个地方获取信息,然后对这些信息进行一些操作,最后把结果返回给你。

首先,代码会连接到一个数据库,这就像是打开一个文件夹,里面存放着很多信息。接着,它会查找你需要的数据,就像在文件夹里找特定的文件一样。

找到数据后,代码会对这些数据进行处理,比如进行计算或者整理。最后,它会把处理后的结果返回给你,就像把整理好的文件放回到文件夹里。

总的来说,这段代码的工作流程就是:连接数据库 -> 查找数据 -> 处理数据 -> 返回结果。

myFolder = "myfolder"
fileSet = set() 

for root, dirs, files in os.walk(myFolder):
    for fileName in files:
        fileSet.add( os.path.join( root[len(myFolder):], fileName ))
98

使用 os.path.relpath()。这正是它的设计目的。

import os
root_dir = "myfolder"
file_set = set()

for dir_, _, files in os.walk(root_dir):
    for file_name in files:
        rel_dir = os.path.relpath(dir_, root_dir)
        rel_file = os.path.join(rel_dir, file_name)
        file_set.add(rel_file)

需要注意的是,os.path.relpath() 是在 Python 2.6 版本中加入的,并且在 Windows 和 Unix 系统上都可以使用。

撰写回答