Как мне связать файлы с xml, который ссылается на них в Python?

#python #elementtree

#python #elementtree

Вопрос:

У меня есть два каталога: ресурсы и метаданные. В каталоге assets содержится множество видеофайлов, а в каталоге метаданных — множество существующих XML-файлов.

Я хочу вычислить контрольные суммы и получить размеры файлов всех ресурсов и поместить их в соответствующие им метаданные. Эти поля уже существуют, но они пустые.

Я анализирую с помощью дерева элементов и уже могу получить размеры файлов и контрольные суммы, но я не уверен, как поместить их в правильные метаданные. Видеофайлам присваивается идентификатор, который также присутствует в метаданных и уже присвоен переменной ‘id’, поэтому я подумал, что могу связать их следующим образом:

 for file in glob.glob("*.mov"):
    if file == (id   '.mov'):
        video_filename = file
    elif video_filename != (id   '.mov'): 
        print(id, 'There is no video file associated with that ID!!!')
  

Когда я запускаю скрипт, и он сначала видит один из других файлов, я получаю условие else if выше.

Как мне проверить, что у меня есть правильный видеофайл для xml и что данные поступают в правильный XML-файл?

Комментарии:

1. Если вы ищете файл с совпадающим именем (id '.mov') , то вы ищете файл с определенным именем, верно? Так зачем перебирать все файлы в каталоге, когда вы можете просто ссылаться на этот файл напрямую по имени?

2. Потому что у меня есть несколько .xmlsи несколько .movs. Я хочу иметь возможность запускать скрипт один раз и обрабатывать все файлы в каталоге.

3. Тогда вам нужна другая логика. Вы должны извлекать id из имени файла. Вам не нужно просматривать все файлы в каталоге для каждого id . Но вы МОГЛИ бы это сделать. Если один из файлов совпадает, ваш код будет работать так, как он существует. Так что просто ничего не делайте, если имя файла не совпадает… просто удалите свой elif регистр (который, кстати, может быть просто else: .

Ответ №1:

  • Выполните итерацию по всем файлам фильма и создайте словарь пар {id:filepath} .
  • Выполните итерацию по XML-файлам, для каждого метаданного получите идентификатор его фильма
    • и используйте этот идентификатор со словарем для поиска пути к правильному файлу фильма
    • обработайте файл фильма
    • поместите новую информацию в метаданные.