Commencez par déplacer le répertoire courant (cd) vers l'emplacement du fichier .py
zip2pdf.py
import os
os.chdir(os.path.dirname(os.path.abspath(__file__)))
Obtenez tous les zips sur CD Ici, nous utilisons le module glob
zip2pdf.py
import glob
zips_ = glob.glob("./*.zip")
Obtenez le nom de fichier (hors extension) pour chaque .zip Créez un répertoire de décompression sous cd à partir du nom du fichier
zip2pdf.py
for zip_path_ in zips_:
filename_ = os.path.split(zip_path_)[1].split(".")[0]
unzip_dir_ = os.path.join(".", filename_)
Maintenant que vous avez un répertoire de décompression, décompressez le zip Décompressez zip en utilisant le module zipfile comme suit
import zipfile
zip_ = zipfile.ZipFile(zip_path_)
zip_.extractall(unzip_dir_)
zip_.close()
Liste uniquement les fichiers zip décompressés avec l'extension d'image (.png / .jpg / .jpeg)
image_list_ = []
for item_ in os.listdir(unzip_dir_):
image_path_ = os.path.join(unzip_dir_, item_)
if os.path.isfile(image_path_):
fileext = os.path.splitext(image_path_)[-1].lower()
if fileext in [".jpg ", ".jpeg ", ".png "]:
image_list_.append(image_path_)
else:
continue
else:
continue
Créez un répertoire pdf sous cd et convertissez-le en pdf Le moyen le plus simple de créer un répertoire est de définir exist_ok = True avec l'option os.makedirs.
import img2pdf
os.makedirs("./pdf", exist_ok=True)
pdf_path_ = os.path.join(".", "pdf", "{}.pdf".format(filename_))
layout = img2pdf.get_layout_fun(params_.pagesize_)
with open(pdf_path_, 'wb') as f:
f.write(img2pdf.convert(image_list_, layout_fun=layout))
Supprimer le répertoire utilisé pour la décompression Supprimer le contenu du répertoire avec rmtree du module shutil
import shutil
shutil.rmtree(unzip_dir_)
zip2pdf.py
import os
import glob
import zipfile
import img2pdf
import shutil
#cd Où se trouve ce fichier
os.chdir(os.path.dirname(os.path.abspath(__file__)))
class params_:
pagesize_ = (img2pdf.mm_to_pt(210), img2pdf.mm_to_pt(297))#A4size
def zip_to_pdf():
#Obtenez tous les cd zip
zips_ = glob.glob("./*.zip")
for zip_path_ in zips_:
print(os.path.split(zip_path_)[1])
#Obtenez uniquement le nom du zip
filename_ = os.path.split(zip_path_)[1].split(".")[0]
unzip_dir_ = os.path.join(".", filename_)
#Créer un répertoire avec le même nom que zip dans cd → décompresser
zip_ = zipfile.ZipFile(zip_path_)
zip_.extractall(unzip_dir_)
zip_.close()
image_list_ = []
#Répertoriez le contenu du fichier décompressé(Image seulement)
for item_ in os.listdir(unzip_dir_):
image_path_ = os.path.join(unzip_dir_, item_)
if os.path.isfile(image_path_):
fileext = os.path.splitext(image_path_)[-1].lower()
if fileext in [".jpg ", ".jpeg ", ".png "]:
image_list_.append(image_path_)
else:
continue
else:
continue
if len(image_list_) == 0:
print("no image files")
continue
image_list_.sort()
os.makedirs("./pdf", exist_ok=True)
pdf_path_ = os.path.join(".", "pdf", "{}.pdf".format(filename_))
layout = img2pdf.get_layout_fun(params_.pagesize_)
with open(pdf_path_, 'wb') as f:
f.write(img2pdf.convert(image_list_, layout_fun=layout))
#Répertoire de destination de décompression supprimé
shutil.rmtree(unzip_dir_)
if __name__ == "__main__":
zip_to_pdf()
Pour la partie conversion PDF, je me suis référé à Collecter des fichiers image en PDF avec Python.
Recommended Posts