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

chr*_*ley 38 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
Run Code Online (Sandbox Code Playgroud)

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

for directories in os.path.isdir(os.listdir(os.getcwd())): 
Run Code Online (Sandbox Code Playgroud)

任何人都可以看到我错在哪里?

谢谢

有它的工作,但它似乎有点圆.

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
Run Code Online (Sandbox Code Playgroud)

Ric*_*dle 55

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

print [name for name in os.listdir(".") if os.path.isdir(name)]
Run Code Online (Sandbox Code Playgroud)

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

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

print [os.path.abspath(name) for name in os.listdir(".") if os.path.isdir(name)]
Run Code Online (Sandbox Code Playgroud)

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

  • 如果在其他目录中搜索:`print [如果是os.path.isdir(os.path.join(MAIN_DIR,name)),则打印os.listdir(MAIN_DIR)中名称的名称] (2认同)

cor*_*ius 20

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

对于你正在做的事情,步行是一个很好的内置


Cha*_*tor 9

我喜欢@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)
Run Code Online (Sandbox Code Playgroud)

否则它不是真的工作


mea*_*est 7

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

例如,如所解释这里:[X [0]中的x os.walk(目录)]