Каталог списка Python, подкаталог и файлы

Я пытаюсь сделать сценарий для списка всего каталога, подкаталога и файлов в данном каталоге.
Я попробовал это:

import sys,os

root = "/home/patate/directory/"
path = os.path.join(root, "targetdirectory")

for r,d,f in os.walk(path):
    for file in f:
        print os.path.join(root,file)

Unfortunatly это не работает правильно.
Я получаю все файлы, но не их полные пути.

Например, если структура dir была бы:

/home/patate/directory/targetdirectory/123/456/789/file.txt

Это распечатало бы:

/home/patate/directory/targetdirectory/file.txt

То, в чем я нуждаюсь, является первым результатом. Любая справка значительно ценилась бы!Спасибо.

105
задан bernie 26 May 2010 в 04:16
поделиться

2 ответа

Используйте os.path.join , чтобы объединить каталог и имя файла :

for path, subdirs, files in os.walk(root):
    for name in files:
        print os.path.join(path, name)

Обратите внимание на использование путь , а не root в конкатенации, поскольку использование root было бы неверным.


В Python 3.4 был добавлен модуль pathlib для упрощения манипуляций с путями. Таким образом, эквивалент os.path.join будет выглядеть следующим образом:

pathlib.PurePath(path, name)

Преимущество pathlib в том, что вы можете использовать множество полезных методов для путей. Если вы используете конкретный вариант Path , вы также можете выполнять фактические вызовы ОС через них, например, переход в каталог, удаление пути, открытие файла, на который он указывает, и многое другое.

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

В объединении следует использовать 'r' вместо 'root'

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

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