Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.python > #3901
| Newsgroups | fr.comp.lang.python |
|---|---|
| Subject | Remplir des champs identique dans plusieurs fichiers |
| From | chahd1 <nospam_fahir.hiba12@gmail.com.invalid> |
| Organization | !No_Organization! |
| Message-ID | <3MadnXU7PIPVJCT_nZ2dnUU7_83NnZ2d@giganews.com> (permalink) |
| Date | 2022-06-27 09:06 -0500 |
Bonjour,
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 ?
merci d'avance .
<code>
import os, subprocess, re
def find_occurrences(template_tex):
# Open template.tex
with open(template_tex, "e;e;r"e;e;) as f:
filedata = f.read()
# Find occurrences of {{item}}
return set(re.findall("e;e;#(.*?)#"e;e;, filedata))
def prompt_replacements(occurrences):
replacements = dict()
# Replacing fields
for occurrence in occurrences:
replaceby = input("e;e;Replace "e;e; + occurrence + "e;e; by: "e;e; )
replacements[occurrence] = replaceby
return replacements
def clean_latex_temporary_files(result_tex):
filename_wext = result_tex[:result_tex.rfind("e;e;."e;e;)]
for ext in ["e;e;tex"e;e;, "e;e;aux"e;e;, "e;e;log"e;e;]:
print("e;e;rm"e;e;, filename_wext + "e;e;."e;e; + ext)
os.remove(filename_wext + "e;e;."e;e; + ext)
def compile_latex(result_tex):
# Convert result.tex to result.pdf
proc = subprocess.Popen(["e;e;pdflatex"e;e;,
"e;e;-interaction=nonstopmode"e;e;, result_tex])
proc.communicate()
clean_temporary_files(result_tex)
def make_replaced_latex(template_tex, result_tex, replacements):
# Write results
with open(template_tex, "e;e;r"e;e;) as f:
filedata = f.read()
for (occurrence, replaceby) in replacements.items():
filedata = filedata.replace("e;e;{{"e;e; + occurrence +
"e;e;}}"e;e;, replaceby)
with open(result_tex, "e;e;w"e;e;) as f:
f.write(filedata)
def main():
map_template_result = {
"e;e;template1.tex"e;e; : "e;e;result1.tex"e;e;,
"e;e;template2.tex"e;e; : "e;e;result2.tex"e;e;,
"e;e;template3.tex"e;e; : "e;e;result3.tex"e;e;,
}
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>
Back to fr.comp.lang.python | Previous | Next — Next in thread | Find similar
Remplir des champs identique dans plusieurs fichiers chahd1 <nospam_fahir.hiba12@gmail.com.invalid> - 2022-06-27 09:06 -0500
Re: Remplir des champs identique dans plusieurs fichiers Olivier Miakinen <om+news@miakinen.net> - 2022-06-28 10:39 +0200
Re: Remplir des champs identique dans plusieurs fichiers Olivier Miakinen <om+news@miakinen.net> - 2022-06-29 02:25 +0200
csiph-web