Каталоги списка и получают название Каталога

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

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
38
задан chrissygormley 22 April 2010 в 12:18
поделиться

4 ответа

Это напечатает все подкаталоги текущего каталога:

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

55
ответ дан 27 November 2019 в 03:24
поделиться
import os
for root, dirs, files in os.walk(top, topdown=False):
    for name in dirs:
        print os.path.join(root, name)

Прогулка отлично подходит для того, что вы делаете

20
ответ дан 27 November 2019 в 03:24
поделиться

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

2
ответ дан 27 November 2019 в 03:24
поделиться

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

Например, как объяснено здесь: [x[0] for x in os.walk(directory)]

7
ответ дан 27 November 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: