Les substitutions communes entre différents fichiers
masal
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai un programme qui modifie automatiquement des champs déjà définis dans plusieurs template
Par exemple, dans mon modèle, j'ai défini un champ
Parfois les substitutions sont communes entre les différents fichiers, il est donc inutile de les demander plusieurs fois. comment puis-je résoudre ce problème ?
J'ai un programme qui modifie automatiquement des champs déjà définis dans plusieurs template
.text.
Par exemple, dans mon modèle, j'ai défini un champ
def\clients{#.......#}le code demande avec quoi je veux le remplacer .
Parfois les substitutions sont communes entre les différents fichiers, il est donc inutile de les demander plusieurs fois. comment puis-je résoudre ce problème ?
import os, subprocess, re def find_occurrences(template_tex): # Open template.tex with open(template_tex, "r") as f: filedata = f.read() # Find occurrences of {{item}} return set(re.findall("\#(.*?)\#", filedata)) def prompt_replacements(occurrences): replacements = dict() # Replacing fields for occurrence in occurrences: replaceby = input("Replace " + occurrence + " by: " ) replacements[occurrence] = replaceby return replacements def clean_latex_temporary_files(result_tex): filename_wext = result_tex[:result_tex.rfind(".")] for ext in ["tex", "aux", "log"]: print("rm", filename_wext + "." + ext) os.remove(filename_wext + "." + ext) def compile_latex(result_tex): # Convert result.tex to result.pdf proc = subprocess.Popen(["pdflatex", "-interaction=nonstopmode", result_tex]) proc.communicate() clean_temporary_files(result_tex) def make_replaced_latex(template_tex, result_tex, replacements): # Write results with open(template_tex, "r") as f: filedata = f.read() for (occurrence, replaceby) in replacements.items(): filedata = filedata.replace("{{" + occurrence + "}}", replaceby) with open(result_tex, "w") as f: f.write(filedata) def main(): map_template_result = { "template1.tex" : "result1.tex", "template2.tex" : "result2.tex", "template3.tex" : "result3.tex", } occurrences = set() for template_tex in map_template_result.keys(): occurrences |= find_occurrences(template_tex) replacements = prompt_replacements(occurrences) for (template_tex, result_tex) in map_template_result.items(): make_replaced_latex(template_tex, result_tex, replacements) compile_latex(result_tex) clean_temporary_files(result_tex) main()
A voir également:
- Les substitutions communes entre différents fichiers
- Différence entre tcp et udp - Guide
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Difference entre million et milliard - Accueil - Technologies
3 réponses
Bonjour
Tous d'abord, tu as essayé d'utiliser la coloration syntaxique mais sans forcer le langage python, ce qui a donné un pavé gris, moche, sans coloration, numérotation de ligne et ascenseurs.
J'ai corrigé ton message mais pour la prochaine fois merci de prendre en compte ce petit tuto.
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Pour répondre à ta question, sans avoir décortiqué ton code.
Si tu veux faire un template à la fois pour plusieurs fichiers, il suffit de demander le template et une liste de fichiers.
Si tu veux faire plusieurs template valables sur plusieurs fichiers, il de demander la liste des templates et la liste des fichiers.
Là où ça se complique c'est si tu veux remplacer
Tous d'abord, tu as essayé d'utiliser la coloration syntaxique mais sans forcer le langage python, ce qui a donné un pavé gris, moche, sans coloration, numérotation de ligne et ascenseurs.
J'ai corrigé ton message mais pour la prochaine fois merci de prendre en compte ce petit tuto.
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Pour répondre à ta question, sans avoir décortiqué ton code.
Si tu veux faire un template à la fois pour plusieurs fichiers, il suffit de demander le template et une liste de fichiers.
Si tu veux faire plusieurs template valables sur plusieurs fichiers, il de demander la liste des templates et la liste des fichiers.
Là où ça se complique c'est si tu veux remplacer
def\clients{#.......#}par
totodans 4 fichiers puis par
tutudans 5 fichiers et par
titipour ceux qui restent.
masal
merci beaucoup , mais moi je veux faire un Template de chaque fichier mais parfois dans les fichiers il y a des champs identique dons je peux pas qu'ile me demande de les remplir à chaque fois , déjà tous mes fichier sont dans le même dossier .
mais parfois dans les fichiers il y a des champs identique dons je peux pas qu'ile me demande de les remplir à chaque fois
Je suis pas certain de comprendre cette phrase.
Dans mon interpretation, ça revient à ce que je t'ai déjà dit
Si tu veux faire un template à la fois pour plusieurs fichiers, il suffit de demander le template et une liste de fichiers.
je suis désolé : je voulais dire que je veux pas qu'a chaque fois me demande de remplir le champs .
par exemple dans le
dans un autres fichier
par exemple dans le
fichier1.texil y a
\def\date {......}
dans un autres fichier
fichier2.texil y a le même champs
\def\date {......}qui doit être remplis par la même chose que pour le premier fichier