如何获取不同目录中的所有文件名?
How can I get all filename in different directories?
假设目录层次结构如下所示:
A(root)
|
B---------C--------D
| | |
fileB.h fileC.png fileD.py
fileC1.jpg
E
|
fileE.py
如何访问所有文档?或者只是获取路径。有没有办法迭代所有?
我的工作:
path = sys.path[0]
for filename_dir in os.listdir(path):
filename, ext = os.path.splitext(filename_dir)
if ext == '.h':
#do something
elif ext == '.png'
#do something
.....
但是据我所知listdir
只能访问我程序的py文件所在的目录
这只给出目录下的目录和文件,但不是递归的:
import os
for filename in os.listdir(path):
print filename
如果要列出绝对路径:
import os
def listdir_fullpath(d):
return [os.path.join(d, f) for f in os.listdir(d)]
如果你想要递归搜索,这会给你一个 returns 三元组的迭代器,包括每次迭代的父目录、目录列表和文件列表:
for i,j,k in os.walk('.'):
print i, j, k
例如:
import os
path = sys.path[0]
for dirname, dirnames, filenames in os.walk(path):
for subdirname in dirnames:
print "FOUND DIRECTORY: ", os.path.join(dirname, subdirname)
for filename in filenames:
print "FOUND FILE: ", os.path.join(dirname, filename)
假设目录层次结构如下所示:
A(root)
|
B---------C--------D
| | |
fileB.h fileC.png fileD.py
fileC1.jpg
E
|
fileE.py
如何访问所有文档?或者只是获取路径。有没有办法迭代所有?
我的工作:
path = sys.path[0]
for filename_dir in os.listdir(path):
filename, ext = os.path.splitext(filename_dir)
if ext == '.h':
#do something
elif ext == '.png'
#do something
.....
但是据我所知listdir
只能访问我程序的py文件所在的目录
这只给出目录下的目录和文件,但不是递归的:
import os
for filename in os.listdir(path):
print filename
如果要列出绝对路径:
import os
def listdir_fullpath(d):
return [os.path.join(d, f) for f in os.listdir(d)]
如果你想要递归搜索,这会给你一个 returns 三元组的迭代器,包括每次迭代的父目录、目录列表和文件列表:
for i,j,k in os.walk('.'):
print i, j, k
例如:
import os
path = sys.path[0]
for dirname, dirnames, filenames in os.walk(path):
for subdirname in dirnames:
print "FOUND DIRECTORY: ", os.path.join(dirname, subdirname)
for filename in filenames:
print "FOUND FILE: ", os.path.join(dirname, filename)