Python - 获取目录中所有文件和子文件夹的相对路径
我正在寻找一种好的方法来获取特定文件夹内文件和(子)文件夹的相对路径。
我现在的方法是使用 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 系统上都可以使用。