列出目录并获取目录的名称

时间:2010-04-22 11:29:30

标签: python directory

我正在尝试获取代码以列出文件夹中的所有目录,将目录更改为该文件夹并获取当前文件夹的名称。到目前为止我的代码是在下面,并且不是在工作。我似乎得到了父文件夹名称。

import os

for directories in os.listdir(os.getcwd()): 
    dir = os.path.join('/home/user/workspace', directories)
    os.chdir(dir)
    current = os.path.dirname(dir)
    new = str(current).split("-")[0]
    print new

我还在文件夹中有其他文件,但我不想列出它们。我已经尝试了以下代码,但我还没有工作。

for directories in os.path.isdir(os.listdir(os.getcwd())): 

谁能看到我哪里出错了?

由于

让它工作但似乎有点圆。

import os
os.chdir('/home/user/workspace')
all_subdirs = [d for d in os.listdir('.') if os.path.isdir(d)]
for dirs in all_subdirs:
    dir = os.path.join('/home/user/workspace', dirs)
    os.chdir(dir)
    current = os.getcwd()
    new = str(current).split("/")[4]
    print new

5 个答案:

答案 0 :(得分:44)

这将打印当前目录的所有子目录:

print [name for name in os.listdir(".") if os.path.isdir(name)]

我不确定您使用split("-")做了什么,但也许这段代码可以帮助您找到解决方案?

如果您想要目录的完整路径名,请使用abspath

print [os.path.abspath(name) for name in os.listdir(".") if os.path.isdir(name)]

请注意,这些代码只会获得直接的子目录。如果您想要子子目录等,您应该像其他人建议的那样使用walk

答案 1 :(得分:19)

import os
for root, dirs, files in os.walk(top, topdown=False):
    for name in dirs:
        print os.path.join(root, name)
对于你正在做的事情,步行是一个很好的内置

答案 2 :(得分:6)

你似乎正在使用python,就像它是shell一样。每当我需要做你正在做的事情时,我就用os.walk()

例如,正如here所解释的那样:os.walk(目录)中x的[x [0]]

答案 3 :(得分:5)

我喜欢@RichieHindle 的答案,但我为它添加了一些小修复

import os

folder = './my_folder'

sub_folders = [name for name in os.listdir(folder) if os.path.isdir(os.path.join(folder, name))]

print(sub_folders)

否则就不行了

答案 4 :(得分:2)

列出当前目录(for directories in os.listdir(os.getcwd()):)中的条目,然后将这些条目解释为完全不同的目录(dir = os.path.join('/home/user/workspace', directories))的子目录,这是一件看起来很可疑的事情。