Open source modální textový editor Helix, inspirovaný editory Vim, Neovim či Kakoune, byl vydán ve verzi 25.07. Přehled novinek se záznamy terminálových sezení v asciinema v oznámení na webu. Detailně v CHANGELOGu na GitHubu.
Americký výrobce čipů Nvidia získal od vlády prezidenta Donalda Trumpa souhlas s prodejem svých pokročilých počítačových čipů používaných k vývoji umělé inteligence (AI) H20 do Číny. Prodej těchto čipů speciálně upravených pro čínský trh by tak mohl být brzy obnoven, uvedla firma na svém blogu. Americká vláda zakázala prodej v dubnu, v době eskalace obchodního sporu mezi oběma zeměmi. Tehdy to zdůvodnila obavami, že by čipy mohla využívat čínská armáda.
3D software Blender byl vydán ve verzi 4.5 s prodlouženou podporou. Podrobnosti v poznámkách k vydání. Videopředstavení na YouTube.
Open source webový aplikační framework Django slaví 20. narozeniny.
V Brestu dnes začala konference vývojářů a uživatelů linuxové distribuce Debian DebConf25. Na programu je řada zajímavých přednášek. Sledovat je lze online.
Před 30 lety, tj. 14. července 1995, se začala používat přípona .mp3 pro soubory s hudbou komprimovanou pomocí MPEG-2 Audio Layer 3.
Výroba 8bitových domácích počítačů Commodore 64 byla ukončena v dubnu 1994. Po více než 30 letech byl představen nový oficiální Commodore 64 Ultimate (YouTube). S deskou postavenou na FPGA. Ve 3 edicích v ceně od 299 dolarů a plánovaným dodáním v říjnu a listopadu letošního roku.
Společnost Hugging Face ve spolupráci se společností Pollen Robotics představila open source robota Reachy Mini (YouTube). Předobjednat lze lite verzi za 299 dolarů a wireless verzi s Raspberry Pi 5 za 449 dolarů.
Dnes v 17:30 bude oficiálně vydána open source počítačová hra DOGWALK vytvořena v 3D softwaru Blender a herním enginu Godot. Release party proběhne na YouTube od 17:00.
McDonald's se spojil se společností Paradox a pracovníky nabírá také pomocí AI řešení s virtuální asistentkou Olivii běžící na webu McHire. Ian Carroll a Sam Curry se na toto AI řešení blíže podívali a opravdu je překvapilo, že se mohli přihlásit pomocí jména 123456 a hesla 123456 a získat přístup k údajům o 64 milionech uchazečů o práci.
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: