Stability AI představila SDXL Turbo, tj. umělou inteligenci pro generování obrázků z textového popisu v reálném čase, viz ukázka na YouTube.
Svobodná webová platforma pro sdílení a přehrávání videí PeerTube (Wikipedie) byla vydána v nové major verzi 6. Přehled novinek i s náhledy a videi v oficiálním oznámení a na GitHubu (6.0.0, 6.0.1).
S eDoklady lze mít od ledna 2024 občanku v mobilní aplikaci [Digitální a informační agentura – DIA].
Google představil novou doménu nejvyššího řádu: .meme. Viz například knowyour.meme nebo find.meme.
IKEA představila 3 senzory pro chytrou domácnost: senzor na dveře a okna PARASOLL, bezdrátový pohybový senzor VALLHORN a senzor úniku vody BADRING. Budou kompatibilní s Home Assistant?
Weston, referenční implementace kompozitoru pro Wayland, byl vydán ve verzi 13.0.0. Přehled novinek v oznámení.
Laboratoře CZ.NIC vydaly novou verzi 4.23.0 aplikace Datovka, tj. svobodné multiplatformní desktopové aplikace pro přístup k datovým schránkám a k trvalému uchovávání datových zpráv v lokální databázi. Přidána byla podpora pro velkoobjemové datové zprávy (VoDZ) a pro typy datových schránek PFO_ARCH, PFO_AIAT a PFO_AZI. Další novinkou je pamatování velikosti dialogových oken, pozice ovládacích prvků, šířek sloupců a řazení položek
… více »Distribuce Tails specializující se ochranu online soukromí uživatele byla vydána ve verzi 5.20. Mimo jiné aktualizuje Tor Browser (13.0.4) a Thunderbird (115.5), opravuje několik chyb.
Bylo rozhodnuto, že Red Hat Enterprise Linux 10, jehož vydání je plánováno na první pololetí 2025, bude už bez X serverů. Zůstane pouze Xwayland.
Mobilní Datovka, tj. svobodná aplikace pro přístup k datovým schránkám pro zařízení s operačním systémem iOS a Android, byla minulá týden vydána v nové verzi 2.0.0. Zásadně bylo zmodernizováno uživatelské rozhraní. Přibyla možnost přepínat aplikaci mezi světlým a tmavým režimem. Současně byl publikován rozhovor QaA: Projekt Datovka očima vývojářů.
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: