我如何在Python中获得给定目录中的所有文件(和目录)的列表?
当前回答
如果我觉得我会把这个扔进去。简单和肮脏的方式进行通配符搜索。
import re
import os
[a for a in os.listdir(".") if re.search("^.*\.py$",a)]
其他回答
递归实现
import os
def scan_dir(dir):
for name in os.listdir(dir):
path = os.path.join(dir, name)
if os.path.isfile(path):
print path
else:
scan_dir(path)
这是一种遍历目录树中每个文件和目录的方法:
import os
for dirname, dirnames, filenames in os.walk('.'):
# print path to all subdirectories first.
for subdirname in dirnames:
print(os.path.join(dirname, subdirname))
# print path to all filenames.
for filename in filenames:
print(os.path.join(dirname, filename))
# Advanced usage:
# editing the 'dirnames' list will stop os.walk() from recursing into there.
if '.git' in dirnames:
# don't go into any .git directories.
dirnames.remove('.git')
如果我觉得我会把这个扔进去。简单和肮脏的方式进行通配符搜索。
import re
import os
[a for a in os.listdir(".") if re.search("^.*\.py$",a)]
如果你需要通配符,也有一个模块。例如:
import glob
glob.glob('./[0-9].*')
将返回如下内容:
['./1.gif', './2.txt']
请在这里查看文档。
试试这个:
import os
for top, dirs, files in os.walk('./'):
for nm in files:
print os.path.join(top, nm)