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

我试图得到的代码列出一个文件夹中的所有目录,改变目录到该文件夹,并得到当前文件夹的名称。到目前为止我的代码在下面,现在不能工作。我好像知道父文件夹的名字了。

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
178409 次浏览

您似乎将 Python 当作 shell 来使用。每当我需要做像你这样的事情时,我都会使用 Os.walk ()

例如,正如解释的那样,给你: [x[0] for x in os.walk(directory)]应该递归地提供所有子目录。

这将打印工作目录的所有子目录:

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

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

步行是一个很好的内置为你正在做什么

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

我喜欢@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)

否则我就没法工作了

Python3的稍微更正(与@RichieHindle 的答案相同)

这将在一个数组中打印工作目录的所有子目录:

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

使上述内容更易阅读

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

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

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

请注意,这些代码片段将只获得直接的子目录。