Подтвердить что ты не робот

Список каталогов и получить имя каталога

Я пытаюсь заставить код перечислить все каталоги в папке, сменить каталог в эту папку и получить имя текущей папки. Код, который у меня есть, ниже и не работает в данный момент. Кажется, я получаю имя родительской папки.

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
4b9b3361

Ответ 1

Здесь будут напечатаны все подкаталоги текущего каталога:

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, как предложили другие.

Ответ 2

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

Прогулка - хорошая встроенная функция для того, что вы делаете.

Ответ 3

Кажется, вы используете python, как если бы это была оболочка. Всякий раз, когда мне нужно было делать что-то вроде того, что вы делаете, я использовал os.walk()

Например, как описано здесь: [x [0] для x в os.walk(каталог)]

Ответ 4

Перечисление записей в текущем каталоге (for directories in os.listdir(os.getcwd()):), а затем интерпретация этих записей как подкаталогов совершенно другого каталога (dir = os.path.join('/home/user/workspace', directories)) - это одна вещь, которая выглядит подозрительной.