关于python:列出目录并获取目录的名称

List Directories and get the name of the Directory

我正在尝试获取列出文件夹中所有目录的代码,将目录更改为该文件夹并获取当前文件夹的名称。到目前为止,我所拥有的代码在下面,现在还不能工作。我好像得到了父文件夹的名称。

1
2
3
4
5
6
7
8
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

文件夹中还有其他文件,但我不想列出它们。我试过下面的代码,但我也没用。

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

有人知道我哪里出错了吗?

谢谢

它起作用了,但好像有点圆。

1
2
3
4
5
6
7
8
9
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

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

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

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

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

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

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


1
2
3
4
import os
for root, dirs, files in os.walk(top, topdown=False):
    for name in dirs:
        print os.path.join(root, name)

步行是一个很好的内置功能。


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

例如,如这里所解释的那样:在os.walk(directory)中,x的值为[x[0]


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