Я пытаюсь заставить код перечислять все каталоги в папке, каталог изменения в ту папку и получать название текущей папки. Код, который я имею до сих пор, ниже и не работает в минуту. Я, кажется, получаю родительское имя папки.
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)]
Обратите внимание, что эти фрагменты кода получат только непосредственные подкаталоги. Если вам нужны подкаталоги и т. Д., Вы должны использовать walk
, как предлагали другие.
import os
for root, dirs, files in os.walk(top, topdown=False):
for name in dirs:
print os.path.join(root, name)
Прогулка отлично подходит для того, что вы делаете
Перечисление записи в текущем каталоге ( для каталогов в os.listdir (os.getcwd ()):
), а затем интерпретировать эти записи как подкаталоги совершенно другого каталога ( dir = os.path.join ('/ home / user / workspace', каталоги)
) - это то, что выглядит подозрительно.
Похоже, вы используете python так, как будто это оболочка. Всякий раз, когда мне нужно было сделать что-то подобное тому, что делаете вы, я использовал os.walk()
Например, как объяснено здесь: [x[0] for x in os.walk(directory)]