OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.
Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.
R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.
IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.
Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.
Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.
Po roce vývoje od vydání verze 1.24.0 byla vydána nová stabilní verze 1.26.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.26.
Byla vydána nová verze 6.2 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.14.
Byla vydána nová verze 30.0.0 frameworku pro vývoj multiplatformních desktopových aplikací pomocí JavaScriptu, HTML a CSS Electron (Wikipedie, GitHub). Chromium bylo aktualizováno na verzi 124.0.6367.49, V8 na verzi 12.4 a Node.js na verzi 20.11.1. Electron byl původně vyvíjen pro editor Atom pod názvem Atom Shell. Dnes je na Electronu postavena celá řada dalších aplikací.
Byla vydána nová verze 9.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 220 vývojářů. Provedeno bylo více než 2 700 commitů. Přehled úprav a nových vlastností v seznamu změn.
file=open('../soubor.lyx','a') #for nazev_souboru in ../nejake_pdf_documenty/*.[pP][dD][fF]; do #nazev_souboru_bez_pripony=${nazev_souboru:25:-4} text=r"""\begin_layout Standard \begin_inset CommandInset label LatexCommand label name "${nazev_souboru_bez_pripony}" \end_inset \end_layout \begin_layout Standard \begin_inset External template PDFPages filename ${nazev_souboru:1} extra LaTeX "pages=-, pagecommand={\thispagestyle{fancy}}, addtotoc={1,section,1,${nazev_souboru_bez_pripony},${nazev_souboru_bez_pripony}}" scale 80 \end_inset \end_layout """ file.write(text) logging.debug('text: '+text) #done file.close() del file del text
Řešení dotazu:
import glob import os from jinja2 import Environment # Načtení šablony do prom. tmp env = Environment() with open('cesta/k/templatu.lyx', 'r', encoding='utf8') as fread: tmp = env.from_string(fread.read()) # dict s hodnotami content = {} # Pak tady budeš všechno možné, třeba to prolezení PDF souborů # Dejme tomu, že magicka_funkce vrací list s názvy PDF def magicka_funkce(path): files = glob.glob(path + '*.pdf') out = [] # Ošklivé, ale takhle nějak for fl in files: out.append({'cesta': fl, 'nazev_souboru': os.path.basename(fl), 'nazev_souboru_bez_pripony': os.path.splitext(os.path.basename(fl))[0]}) return out seznam_souboru = magicka_funkce('cesta/') content['seznam_souboru'] = seznam_souboru # Nakonec ten seznam pošleš šabloně vygenerovany_dokument_jako_string = tmp.render(content) with open('vysledny_soubor.lyx', 'r', encoding='utf8') as fwrite: fwrite.write(vygenerovany_dokument_jako_string)No a v té šabloně budeš mít už syntaxi Jinja:
{% for pdf in seznam_souboru %} \begin_layout Standard \begin_inset CommandInset label LatexCommand label name "{{ pdf.nazev_souboru_bez_pripony }}" \end_inset \end_layout \begin_layout Standard \begin_inset External template PDFPages filename {pdf.nazev_souboru:1} extra LaTeX "pages=-, pagecommand={\thispagestyle{fancy}}, addtotoc={1,section,1,{{ pdf.nazev_souboru_bez_pripony }}},{{ pdf.nazev_souboru_bez_pripony }}}" scale 80 \end_inset \end_layout {% endfor %}Jakmile generuju soubory, tak takhle. Než jsem se dostal k Jinja2, tak jsem to dělal stejně, jako to máš v otázce, tj. postupně zapisovat do souboru po kouskách. Ale tohle je o poznání jednodušší a čistší. Hlavně to podporuje cykly i podmínky (viz první řádek templatu). Kromě Jinja2 má python ve standardní knihovně string.Template. Což je něco podobného, ale spíš jen formou search & replace.
nejake_pdf_dokumenty=glob.glob('../nejake_pdf_dokumenty/*.[pP][dD][fF]') nejake_pdf_dokumenty.sort() logging.debug('nejake_pdf_dokumenty: '+str(nejake_pdf_dokumenty)) for nazev_souboru in nejake_pdf_dokumenty: logging.debug('nazev_souboru: '+nazev_souboru) nazev_souboru_bez_pripony=nazev_souboru[25:-4] logging.debug('nazev_souboru_bez_pripony: '+nazev_souboru_bez_pripony)Tim bash skriptem jsem doposud vyplnoval pdf formulare a sadu lyx dokumentu ktere jsem jeste pak dodatecne rucne editoval (jejich obsah, ne kod) a nakonec vse zahrnul do jedineho lyx svazku a ten nakonec opet exportoval do pdf fasciklu pro konecne pouziti. Jak ten skript rostl tak vyslo najevo ze bash uz nevyhovuje a je treba prepsat do jineho jazyka, oddelit sablony od kodu (uz ted mi dochazi ke konfliktum syntaxi lyxu a pythonu, jako treba uvozovky) a pokud jde o kod samotny tak ten je potreba take restrukturalizovat, napsat funkce a rozdelit do vhodnych modulu. Navic bude asi potreba skript distribuovat takze je treba doresit i instalatory na jine OS. Diky za tip na reseni, toto vyuziju.
nazev_souboru[25:-4]
. Teď to třeba na 3 písmenné přípony funguje, ale projet složku s jpg/jpeg a už to fungovat nebude. Proto existuje funkce splitext. A jestli bude potřeba skript i na Win, tak v modulu os jsou fce na práci s cestami, které chápou / a \, není pak nutné ve skriptu detekovat os a ručně uplácávat cesty.
Tiskni Sdílej: