使用 os.listdir 仅显示目录

Use os.listdir to show directories only

如何通过 os.listdir 使 python 仅输出目录,同时通过 raw_input 指定要列出的目录?

我有:

file_to_search = raw_input("which file to search?\n>")

dirlist=[]

for filename in os.listdir(file_to_search):
    if os.path.isdir(filename) == True:
        dirlist.append(filename)

print dirlist

现在,如果我输入(通过 raw_input)当前工作目录,这实际上有效。但是,如果我输入任何其他内容,列表 returns 为空。我试图分而治之,但每个代码片段都按预期工作。

这是预期的,因为 os.listdir 只有 returns files/dirs 的 names,所以找不到对象,除非你运行 在当前目录下。

您必须 join 扫描目录以计算完整路径才能正常工作:

for filename in os.listdir(file_to_search):
    if os.path.isdir(os.path.join(file_to_search,filename)):
        dirlist.append(filename)

注意列表理解版本:

dirlist = [filename for filename in os.listdir(file_to_search) if os.path.isdir(os.path.join(file_to_search,filename))]