Deutsch   English   Français   Italiano  
<t9eenf$1d6m$1@cabale.usenet-fr.net>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!usenet-fr.net!.POSTED!not-for-mail
From: Olivier Miakinen <om+news@miakinen.net>
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: <t9eenf$1d6m$1@cabale.usenet-fr.net>
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 ?

==============================================================================

<code>

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()
<code>



-- 
Olivier Miakinen