#python #loops #directory #mapping #move
#питон #петли #каталог #отображение #двигаться
Вопрос:
Я хотел бы извлечь файл 7z, сначала я должен проверить, существует ли файл 7z или нет, выполнить извлечение, затем сопоставить конкретный файл в извлеченной папке, а затем переместить извлеченную папку на основе результата. Если файл, который я сопоставил, существует в папке, перейдите в допустимую папку, в противном случае перейдите в недопустимую папку. Я сделал некоторый код, но все еще есть проблема с перемещением недопустимой папки.
Вот что я сделал.
Это тот самый config.py
RAW_DIR = "E:/data/raw" OUTPUT_DIR = "E:/data/output" RESULT_DIR = "E:/data/output/output" VALID_DIR = "E:/data/valid" INVALID_DIR = "E:/data/invalid" RAW_IDENTIFIER = "E:/data/raw/*_zipfile.7z" VALID_IDENTIFIER = "/system/result/processing.log"
Это то main.py
import time import glob import shutil import os.path import config as cfg from pyunpack import Archive # Extract for i, f in enumerate(glob.glob(os.path.join(cfg.RAW_DIR, cfg.RAW_IDENTIFIER))): timestamp = time.strftime("%Y%m%d%H%M%S") output_path = cfg.RESULT_DIR str(i) "_" timestamp os.mkdir(output_path) Archive(f).extractall(output_path) # Mapping for folder in enumerate(glob.glob(output_path cfg.VALID_IDENTIFIER)): shutil.move(output_path, cfg.VALID_DIR) file = glob.glob(cfg.OUTPUT_DIR "/output*") file_name = os.path.basename(file) shutil.move(file_name, cfg.INVALID_DIR)
Кто-нибудь может мне помочь, пожалуйста. Большое спасибо
Комментарии:
1. Чтобы извлечь файл .7z, вам потребуется использовать стороннюю библиотеку. StackOverflow-это не то место, где можно запрашивать рекомендации для библиотек, но быстрый поиск в Google покажет несколько.
2. @Grismar Я думаю, что автор не просит какой-либо третьей части библиотеки, а скорее о способе копирования файла из одного каталога в другой
3. Ах , я не заметил, что вы уже использовали
pyunpack
— вы ужеshutil.move(file_name, cfg.INVALID_DIR)
использовали, но в вашем коде, похоже, есть некоторые другие ошибки — в чем именно заключается ваш вопрос здесь?