我想谈几个目录,然后抓住一个目录的信息。目前我使用:
i = 0
for root, dirs, files in os.walk(home_path):
if i >= 1:
return 1
i += 1
for this_dir in dirs:
do stuff
当然,这非常乏味。当我想走下它下面的子目录时,我会使用j等同样的5行...
在python中获取单个目录下所有目录和文件的最短方法是什么?
答案 0 :(得分:5)
您可以清空dirs
列表,os.walk()
不会递归:
for root, dirs, files in os.walk(home_path):
for dir in dirs:
# do something with each directory
dirs[:] = [] # clear directories.
注意dirs[:] =
切片分配;我们正在替换dirs
中的元素(而不是dirs
引用的列表),以便os.walk()
不会处理已删除的目录。
仅当您将topdown
关键字参数与documentation of os.walk()
保持True
时才有效:
当
topdown
为True
时,调用者可以就地修改dirnames列表(可能使用del
或切片分配),而walk()
只会递归到名称保留在 dirnames 中的子目录;这可用于修剪搜索,强制执行特定的访问顺序,甚至可以通知walk()
调用者在再次恢复walk()
之前创建或重命名的目录。
或者,使用os.listdir()
并自行将名称过滤到目录和文件中:
dirs = []
files = []
for name in os.listdir(home_path):
path = os.path.join(home_path, name)
if os.isdir(path):
dirs.append(name)
else:
files.append(name)