Portál AbcLinuxu, 11. května 2025 10:32

Dotaz: Python: jaka je nejlepsi/elegantnejsi praktika pro odkazovani na soubory?

22.9.2019 13:47 zdenek2008 | skóre: 26
Python: jaka je nejlepsi/elegantnejsi praktika pro odkazovani na soubory?
Přečteno: 479×
Odpovědět | Admin
Cas od casu si pisu skriptiky v Pythonu, vetsinou pro sestavovani pravnich spisu a automatizaci mechanickych/opakujicich se cinnosti a doplnovani stale tychz informaci. Jak se casem skriptiky mnozi, bobtnaji a konci v ruznych adresarich, tak pri importovani do jinych skriptu mam casto problem s odkazovanim na vstupni/vystupni soubory. Napriklad relativni odkaz na vstupni soubor ne pokazde funguje kdyz ten konkretni modul importuji do jineho modulu v jinem adresari. Jak si tak postupne v prubehu doby ctu ruzne navody a tutorialy, tak obcas pouziju nejakou metodu, ta v konkretnim pripade treba funguje, ale pak treba vytvorim novy skript s novou funkcionalitou a tam uz stejna metoda nefunguje a tak najdu jinou a celkove uz je v tom docela chaos. Tak bych se rad zeptal, jaka praktika pro odkazovani na soubory v ruznych adresarich by byla nejlepsi nebo nejelegantnejsi pro neprilis velky projekt s nekolika adresari a rekneme nekolika desitkami modulu/funkci, ktery ale postupne roste? Kdyztak predem diky za pripadne nazory nebo tipy.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.9.2019 08:33 NN
Rozbalit Rozbalit vše Re: Python: jaka je nejlepsi/elegantnejsi praktika pro odkazovani na soubory?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Napriklad relativni odkaz na vstupni soubor ne pokazde funguje kdyz ten konkretni modul importuji do jineho modulu v jinem adresari.
To mas vstupni soubory hardcoded v modulech? Rekl bych, ze dost podstatna praktika je oddeovat data od kodu. Potom to bude pouzitelne pro libovolny vstup a vystup. Soubory/cesty muzes napriklad predavat jak parametry.
23.9.2019 16:12 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Python: jaka je nejlepsi/elegantnejsi praktika pro odkazovani na soubory?
pri importovani do jinych skriptu mam casto problem s odkazovanim
Predpokladam, ze riesi vzajomne volanie skriptov v roznych adresaroch.
If you hold a Unix shell up to your ear, you can you hear the C.
23.9.2019 21:01 zdenek2008 | skóre: 26
Rozbalit Rozbalit vše Re: Python: jaka je nejlepsi/elegantnejsi praktika pro odkazovani na soubory?
Je to tak.
25.9.2019 09:27 Tomáš
Rozbalit Rozbalit vše Re: Python: jaka je nejlepsi/elegantnejsi praktika pro odkazovani na soubory?
Pro začátek můžeš požár uhasit tak, že si ve skriptu zjistíš absolutní cestu (os.path.abspath) a dalším skriptům pak předáš tu absolutní.

Jak budeš mít uhašeno, tak se podíváš, jak udělat moduly a pak je importovat namísto volání skriptů.
23.9.2019 21:01 zdenek2008 | skóre: 26
Rozbalit Rozbalit vše Re: Python: jaka je nejlepsi/elegantnejsi praktika pro odkazovani na soubory?
Diky za tip. S tim souvisi i to, ze nejdriv to byl jeden skript v bashi, pak jsem to prepsal do pythonu ale porad bylo vse v jednom adresari. Pak jsem pridal asi dva adresare, tam jeste stacilo odkazat na modul ve vedlejsim adresari, ale pak jsem dale pridaval a zacal moduly importovat napric adresari, pak uz bylo potreba trochu vice se obeznamit s os, sys a glob, pak jeste subprocess, ale ted se snazim dalsi rozsireni delat formou trid a navic jsem si pridal i takove mensi gui v tkinteru, jakysi dashboard - klikatko kde mam tlacitka na spousteni ruznych jednotlivych dilcich ukonu (vypln ten a ten formular, sestav kompletni spis atd.). Take chci v novych skriptech pouzivat pathlib misto os/sys/glob, tak proto ten celkovy chaos. Tak treba premyslim jestli je lepe mit vychozi adresar na vrcholu pomyslne hierarchie, tam kde je ten dashboard (a vsechno skripty prepsat), nebo podle potreby menit cwd do vnorenych adresaru kde jsou ty puvodni moduly a volat je az po premisteni do jejich adresaru.
⧠ A = 0 avatar 25.9.2019 08:02 ⧠ A = 0 | skóre: 11 | blog: Technokratovo_zrcadlo | Helsinki
Rozbalit Rozbalit vše Re: Python: jaka je nejlepsi/elegantnejsi praktika pro odkazovani na soubory?
Chápu to správně, že ty skripty ani nebalíčkuješ? Tím bych asi začal. Jinak pokud chceš vidět, jak se to dělá ve složitějších projektech, podívej se například na scipy.
Nevolte zmrdy.
24.9.2019 22:58 Jary | skóre: 30 | blog: Jary má blog | Dům
Rozbalit Rozbalit vše Re: Python: jaka je nejlepsi/elegantnejsi praktika pro odkazovani na soubory?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Doporučil bych psát všecko tak, aby to přijímalo relativní cestu (relativní k working directory). Pokud je nutné něco mít na absolutní cestě, tak bych použil environment variable která bude definovat adresář, ve kterém se data nachází.

Dále bych ti doporučil nastudovat si práci s entry_points a `pip install -e` a třeba setuptools. Těmito nástroji sedá zajistit, že program/skript bude nainstalován tak, že ho budeš moci spustit z jakéhokoiv adresáře, stejně jako třeba `ls`
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky. GitHub

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.