Ceci est un exemple de code pour créer un fichier dox avec la vignette du fichier JPEG inclus dans le sous-dossier du dossier en utilisant la bibliothèque python-docx et le logiciel gratuit "Reduction only". En Python 3.8.
Je vais le décrire comme une référence pour python-docx, sous-processus, etc. pour moi-même un jour.
import docx
import subprocess
from pathlib import Path
rootpath = Path(r"<Le chemin du dossier qui rassemble les dossiers photo>")
shukusenpath = Path(r"<Pour réduction seulement. Chemin>")
thumbdirname = "thumb" #Pour réduction seulement. Le nom du sous-dossier spécifié dans
for folderpath in rootpath.glob("*"):
if not folderpath.is_dir():
continue
newfilepath = rootpath / (folderpath.stem + ".docx")
if newfilepath.is_file():
continue
thumbpath = folderpath / thumbdirname
#Coller uniquement JPEG
#Modifiez ici si vous souhaitez également coller d'autres extensions.
picpaths = list(folderpath.glob("*.jpg "))
if len(picpaths) == 0:
continue
subprocess.run([shukusenpath, *picpaths])
doc = docx.Document()
for picpath in picpaths:
thumbpicpath = thumbpath / picpath.name
try:
doc.add_picture(str(thumbpicpath))
doc.add_paragraph()
doc.add_page_break()
except Exception:
pass
doc.save(newfilepath)
-- python-docx
peut être installé avec pip install python-docx
.
--pathlib.Path
peut combiner des chemins avec l'opérateur / ʻopérateur. --
subprocess` démarre le fichier exécutable et attend la fin en donnant le fichier exécutable et une liste d'arguments comme premier argument.
[literal, * list, * generator]
. *
Est l'expansion des listes et des générateurs.pathlib.Path
directement à doxx.Document.add_picture
, une erreur se produira. Ceci peut être évité en le convertissant en une chaîne avec str (pathlib.Path)
.
--Dans pathlib.Path
, stem
ne nécessite pas de parenthèses, mais dans un usage normal, ʻis_dir () nécessite des parenthèses. ʻIs_dir
n'entraîne pas d'erreur, mais il renvoie la méthode elle-même, donc le donner à ʻif` est toujours vrai.Recommended Posts