Я пытаюсь указать имена каталогов, к которым принадлежит определенный файл. Ниже приведен пример моего файла дерева:Как получить родительский каталог и подкаталог для файла
root_folder
├── topic_one
│ ├── one-a.txt
│ └── one-b.txt
└── topic_two
├── subfolder_one
│ └── sub-two-a.txt
├── two-a.txt
└── two-b.txt
В идеале, я хотел бы быть распечатаны является:
"File: file_name belongs in parent directory"
"File: file_name belongs in sub directory, parent directory"
Я написал этот сценарий:
for root, dirs, files in os.walk(root_folder):
# removes hidden files and dirs
files = [f for f in files if not f[0] == '.']
dirs = [d for d in dirs if not d[0] == '.']
if files:
tag = os.path.relpath(root, os.path.dirname(root))
for file in files:
print file, "belongs in", tag
, который дает меня этот выход:
one-a.txt belongs in topic_one
one-b.txt belongs in topic_one
two-a.txt belongs in topic_two
two-b.txt belongs in topic_two
sub-two-a.txt belongs in subfolder_one
Я не могу em, чтобы выяснить, как получить родительский каталог, включенный для файла в подкаталог. Любая помощь или альтернативные методы были бы весьма полезны.
[питон документ] (https://docs.python.org/3.4/library/os. path.html # os.path.relpath) говорит, что relpath принимает первый аргумент в качестве цели, а второй arg - как источник. В вашем посте вы сравниваете 'root' с самим собой, но вы должны делать' relpath (root, root_folder) ' – user1040495
И для печати вы можете использовать' tag.replace (os.path.sep, ',') ' – user1040495
Спасибо! Это очень близко. Я получаю этот 'sub-two-a.txt принадлежит в topic_two/subfolder_one, topic_two'. Есть ли способ удалить 'topic_two /' для распечатки подкаталога? – AldoTheApache