Path: ...!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!usenet-fr.net!.POSTED!not-for-mail From: Olivier Miakinen Newsgroups: fr.comp.lang.python Subject: Re: Remplir des champs identique dans plusieurs fichiers Date: Tue, 28 Jun 2022 10:39:11 +0200 Organization: There's no cabale Lines: 89 Message-ID: References: <3MadnXU7PIPVJCT_nZ2dnUU7_83NnZ2d@giganews.com> NNTP-Posting-Host: 220.12.205.77.rev.sfr.net Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 8bit X-Trace: cabale.usenet-fr.net 1656405551 46294 77.205.12.220 (28 Jun 2022 08:39:11 GMT) X-Complaints-To: abuse@usenet-fr.net NNTP-Posting-Date: Tue, 28 Jun 2022 08:39:11 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4 In-Reply-To: <3MadnXU7PIPVJCT_nZ2dnUU7_83NnZ2d@giganews.com> Bytes: 4168 Bonjour, Le 27/06/2022 16:06, chahd1 a écrit : > > 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 defclients{#.......#} le code > demande avec quoi je veux le remplacer . > Parfois les substitutions ( les champs ) sont communes entre les différents > fichiers, il est donc inutile qu'il me demande de les remplir plusieurs fois. > comment puis-je résoudre ce problème ? Ton code est illisible sur usenet, ensemble de groupes de discussion pompé par le site que tu utilises pour y accéder. En effet, il remplace chaque « " » par la séquence « "e;e; ». Je vais recopier ton code en faisant le remplacement inverse afin qu'on puisse plus facilement comprendre ta question et y répondre. Mais en même temps il serait bon que l'on puisse signaler le problème au site web, sauf que je ne sais pas lequel c'est. Du coup, chahd1, est-ce que tu pourrais répondre à mon article en copicollant l'URL de la page que tu es en train de lire ? ============================================================================== 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() -- Olivier Miakinen