【发布时间】:2015-09-12 00:26:53
【问题描述】:
有一个目录,其中包含文件夹以及不同格式的文件。
import os
my_list = os.listdir('My_directory')
将返回文件和文件夹名称的完整内容。例如,我可以使用endswith('.txt') 方法仅选择文本文件名称,但如何获取仅文件夹名称的列表?
【问题讨论】:
-
如果您使用
os.walk,它会分别为您提供目录和文件。
有一个目录,其中包含文件夹以及不同格式的文件。
import os
my_list = os.listdir('My_directory')
将返回文件和文件夹名称的完整内容。例如,我可以使用endswith('.txt') 方法仅选择文本文件名称,但如何获取仅文件夹名称的列表?
【问题讨论】:
os.walk,它会分别为您提供目录和文件。
我通常会检查目录,同时一次组装一个列表。假设有一个名为foo 的目录,我想检查子目录:
import os
output = [dI for dI in os.listdir('foo') if os.path.isdir(os.path.join('foo',dI))]
【讨论】:
您可以使用os.walk
for i,j,y in os.walk('.'):
print(i)
【讨论】:
只需对os.listdir返回的结果使用os.path.isdir,如:
def listdirs(path):
return [d for d in os.listdir(path) if os.path.isdir(os.path.join(path, d))]
【讨论】:
应该可以的:
my_dirs = [d for d in os.listdir('My_directory') if os.path.isdir(os.path.join('My_directory', d))]
【讨论】:
os.walk 已经将文件和文件夹拆分到不同的列表中,并且递归工作:
for root,dirs,_ in os.walk('.'):
for d in dirs:
print os.path.join(root,d)
【讨论】: