我正在尝试获取代码来列出文件夹中的所有目录,将目录更改为该文件夹并获取当前文件夹的名称。到目前为止,我的代码如下,目前无法运行。我似乎正在获取父文件夹名称。
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
这将打印当前目录的所有子目录:
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)]) # needs outside parenthesis
请注意,这些代码片段只会获取直接子目录。 如果您想要子子目录等,您应该按照其他人的建议使用
walk
。
对于新版本的Python
我喜欢@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)
否则这对我来说不太有用
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)
) 的子目录,这看起来很可疑。
对 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)])
请注意,这些代码片段只会获取直接子目录。