Я хочу написать скрипт на Python 3, который рекурсивно сканирует папку, находит все файлы с расширением .xml и сохраняет имя файла и относительный путь в словаре.
Структура выглядит так:
ROOT (/home/myuser/projects/myproject)
├── src/
│ └── mypythonscript.py
│
└── import/
└── xml/
├── folder1/
│ ├── filea.json
│ ├── fileb.json
│ └── filec.xml
└── folder2/
├── filea.json
├── fileb.xml
└── filec.json
Мой базовый путь определен как:
basepath = "../import/xml/"
Если я использую os.path.abspath()
, я получаю неверный абсолютный путь к файлам:
/home/myuser/projects/myproject/src/filec.xml
То, что я ищу, - это извлечь путь, который выглядит примерно так:
../import/xml/folder1/filec.xml
Я пробовал это до сих пор:
for folder, subfolder, files in os.walk(basepath):
for file in files:
if os.path.splitext(file)[1] == ".xml":
print(os.path.join(folder, file))
Однако, это ничего не напечатает.
Если я использую print(os.path.relpath(file, basepath))
, я получаю несколько неверных путей, например:
../../src/filec.xml
Идея в том, чтобы сохранить относительные пути к файлам xml, чтобы впоследствии я мог их загрузить и проанализировать с помощью xmltodict.
Задача состоит в том, чтобы выполнить пакетный анализ файлов XML и извлечь из них определенные узлы, чтобы отправить их в другое место, где они могут редактироваться нетехническими специалистами. Как только это будет сделано, мне нужно взять отредактированные данные и поместить их обратно в файлы XML. Таким образом, мне нужен путь к этим файлам.
Я делаю что-то не так или мне следует использовать абсолютные пути?