Byla vydána nová major verze 7.0 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Nově je postavena je na Debianu 13 (Trixie) a GNOME 48 (Bengaluru). Další novinky v příslušném seznamu.
Společnost Meta na dvoudenní konferenci Meta Connect 2025 představuje své novinky. První den byly představeny nové AI brýle: Ray-Ban Meta (Gen 2), sportovní Oakley Meta Vanguard a především Meta Ray-Ban Display s integrovaným displejem a EMG náramkem pro ovládání.
Po půl roce vývoje od vydání verze 48 bylo vydáno GNOME 49 s kódovým názvem Brescia (Mastodon). S přehrávačem videí Showtime místo Totemu a prohlížečem dokumentů Papers místo Evince. Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.
Open source softwarový stack ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán ve verzi 7.0.0. Přidána byla podpora AMD Instinct MI355X a MI350X.
Byla vydána nová verze 258 správce systému a služeb systemd (GitHub).
Byla vydána Java 25 / JDK 25. Nových vlastností (JEP - JDK Enhancement Proposal) je 18. Jedná se o LTS verzi.
Věra Pohlová před 26 lety: „Tyhle aféry každého jenom otravují. Já bych všechny ty internety a počítače zakázala“. Jde o odpověď na anketní otázku deníku Metro vydaného 17. září 1999 na téma zneužití údajů o sporožirových účtech klientů České spořitelny.
Byla publikována Výroční zpráva Blender Foundation za rok 2024 (pdf).
Byl vydán Mozilla Firefox 143.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Nově se Firefox při ukončování anonymního režimu zeptá, zda chcete smazat stažené soubory. Dialog pro povolení přístupu ke kameře zobrazuje náhled. Obzvláště užitečné při přepínání mezi více kamerami. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 143 bude brzy k dispozici také na Flathubu a Snapcraftu.
Byla vydána betaverze Fedora Linuxu 43 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 21. října.
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: