我只想讲几个目录,而只获取一个目录的信息。目前,我使用:
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()
不会处理已删除的目录。仅当您将documentation of
topdown
中的True
关键字参数保留为os.walk()
时,此方法才有效:当
topdown
为True
时,调用者可以就地修改目录名列表(也许使用del
或切片分配),并且walk()
将仅递归到其名称仍保留在目录名中的子目录中。这可用于修剪搜索,强加特定的访问顺序,甚至在呼叫方再次恢复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)
关于python - 一次使用os.walk的干净方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31226731/