Я пытаюсь создать сценарий, который будет проходить через все папки и подпапки rootDir
в поисках указанного c набора папок и файлов. Если скрипт найдет папку (например, testfolder1
), в которой находятся:
textfile.txt
image.jpg
- (опционально)
subtitles.dxfp
- другая папка (например,
testsubfolder1
), содержащая video.mp4
файл - (опционально) другая папка (например,
testsubfolder2
), содержащая video_trailer.mp4
файл
создаст архив, содержащий textfile.txt
, image.jpg
, subtitles.dxfp
(если они были найдены), video.mp4
и video_trailer.mp4
(если он был найден) и сохранит его в rootDir.
В настоящее время у меня есть фрагмент, который рекурсивно ищет все эти файлы, но это не значит, что video.mp4
и video_trailer.mp4
находятся в папках. Как мне изменить мой код, чтобы достичь желаемого эффекта? Я думаю, это должно выглядеть в начале, если были найдены textfile.txt
, image.jpg
и subtitles.dxfp
, если это так, он смотрит, если существует папка, содержащая файл video.mp4
, но не рекурсивно, и в конце он ищет другую папку, содержащую video_trailer.mp4
файл. Я прав? Я не знаю, как я должен правильно написать это в коде. Заранее благодарю за любые советы, приближающие меня к решению.
for dirpath, dirnames, filenames in os.walk(rootDir):
jpg = glob.glob(os.path.join(rootDir, dirpath, '*.jpg'))
mp4 = glob.glob(os.path.join(rootDir, dirpath, '*.mp4'))
txt = glob.glob(os.path.join(rootDir, dirpath, '*.txt'))
xml = glob.glob(os.path.join(rootDir, dirpath, '*.xml'))
dxfp = glob.glob(os.path.join(rootDir, dirpath, '*.dxfp'))
if jpg and mp4 and txt:
if xml and dxfp:
#Archive will have the same name as image
tarName = [i for i in filenames if ".jpg" in i]
tar = tarfile.open("{0}.tar".format(tarName[0].replace(".jpg","")), "w")
for file in [jpg, mp4, txt, xml, dxfp]:
tar.add(file[0])
tar.close()
else:
tarName = [i for i in filenames if ".jpg" in i]
tar = tarfile.open("{0}.tar".format(tarName[0].replace(".jpg","")), "w")
for file in [jpg, mp4, txt]:
tar.add(file[0])
tar.close()