我想谈谈几个目录,然后只获取一个目录的信息。目前我使用:
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中获取单个目录下的所有目录和文件的最短方法是什么?
您可以清空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
关键字参数保留为True
, 的文档中os.walk()
才有效:
当
topdown
isTrue
时,调用者可以就地修改 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)