您好我想查找文件夹中的所有文件,包括子文件夹中的所有文件。这是我的代码
all_files = []
for path, subdirs, files in os.walk(root):
for name in files:
all_files.append(os.path.join(path, name))
print "all_files2 = ", all_files
但上面的代码为我提供了包含整个路径的所有文件。我想要所有带有root路径的文件。所以如果文件是root文件,我只想要文件名,如果它在子目录root / images我想要images / filename .. 谢谢卡尔
答案 0 :(得分:3)
变化:
all_files.append(os.path.join(path, name))
为:
all_files.append(os.path.join(path[len(root):], name))
从根的长度开始切片当前路径。即:
>>> root = 'hello'
>>> sub = 'hello is is ew'
>>> sub[:len(root)]
'hello'
>>> sub[len(root):]
' is is ew'
您也可以使用relpath()
>>> os.path.relpath('root/image/thistoo','root')
'image\\thistoo'
这样:
all_files.append(os.path.join(os.path.relpath(path,root), name))