Структура файла
У меня есть родительский каталог с именем test_folder
, в котором есть несколько (приблизительно 600) подпапок.Каждая подпапка содержит следующее:
- всегда metadump.xml
файл
- либо .pdf
, .pptx
, .xls
, либо .docx
файл
Цель
Я хотел бы переименовать соответствующий файл .pdf
, .pptx
, .xls
или .docx
в каждой подпапке моего родительского каталога (test_folder
) на основе title информация из файла .xml
в той же подпапке с именем banana
в этом примере ниже.
import os
for root, dirs, files in os.walk("C:\\**\\Downloads\\test_folder"):
for file in files:
if file == 'metadump.xml':
filename = os.path.join(root, file)
# READ XML FILE TO OBTAIN 'TITLE' INFORMATION
with open(filename, 'r', encoding='utf-8') as xml_file:
contents = xml_file.read()
title = re.search('<dc:title rsfieldtitle="Title" rsembeddedequiv="Name" rsfieldref="8" rsfieldtype="0">(.+?)</dc:title>', contents).group(1)
print(title) #AS A CHECK FOR SUCCESSFUL TITLE EXTRACTION
# GOING THROUGH FILES AGAIN TO FIND NON-XML FILE
for file in files:
if file != 'metadump.xml':
print(file) #CHECKING THE CORRECT FILE TO BE RENAMED IS SELECTED
src = os.path.join(root, file) #ORIGINAL SOURCE PATH
dst = os.path.join(root, title)#NEW DESTINATION PATH
os.rename(src, dst) #TO RENAME FILES IN THE SUBFOLDER TO THE TITLE
После выполнения этого я получаю следующее:
Project Alpha
<- Правильный заголовок был извлечен из XML <br>foobar.pdf
<- Правильный «другой» файл в подпапке был выбран для переименования </p>
[WinError 123] The filename, directory name, or volume label syntax is incorrect: 'C:\\**\\Downloads\\test_folder\\banana\\foobar.pdf' -> 'C:\\**\\Downloads\\test_folder\\banana\\Project Alpha'
Я не уверен, почемуЯ не могу переименовать другой файл, foobar.pdf
с «заголовком», который был извлечен из файла .XML
в той же подпапке.
Пример требуемого вывода
В test_folder
родительском каталоге, в banana
подпапке у нас есть:
Данные:
- foobar.pdf
(общее имя файла)
- metadump.xml
(в этомs файл, заголовок: Project Alpha можно извлечь)
Результат:
- Project_Alpha.pdf
(имя pdf здесь было изменено)
- metadump.xml
Заранее спасибо за мысли!