abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 22:44 | Nová verze

    Programovací jazyk Python byl vydán v nové major verzi 3.15.0. Podrobný přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 1
    včera 22:33 | Zajímavý projekt

    BIGWORDS.PAGE je open-source webová aplikace, která po otevření odkazu v prohlížeči vykreslí přes celou obrazovku jednoduché informační sdělení. Zpráva i její nastavení jsou uložené v části URL za znakem #, například odkaz https://bigwords.page/#abclinuxu zobrazí jako velký bílý nápis 'abclinuxu' na černém pozadí. Obsah odkazu lze upravovat i vestavěným editorem, ten umožňuje nastavovat formátování a vizuální efekty textu, časovače, QR kódy a obrázky. Zdrojový kód je dostupný pod licencí MIT na GitHubu.

    ❗Červivý Hřib krade❗ | Komentářů: 7
    včera 11:55 | Upozornění

    V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."

    Ladislav Hagara | Komentářů: 8
    včera 09:55 | IT novinky

    Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.

    Ladislav Hagara | Komentářů: 12
    včera 09:44 | IT novinky

    Datové centrum největší ruské technologické společnosti Jandex v Rjazaňské oblasti se stalo cílem dronového útoku a zastavilo provoz. Jandexu se někdy přezdívá „ruský Google“. Provozuje nejoblíbenější internetový vyhledávač v Rusku nebo aplikace pro objednávky jídla a taxi. Využívají jej desítky milionů lidí v rusky mluvících zemích.

    Ladislav Hagara | Komentářů: 13
    včera 09:33 | Nová verze

    Francouzská společnost Mistral AI představila Mistral Large 4 (interně přezdívaný 'le Chonk', volně přeloženo 'pořádný macek'), 'open-weight multimodální hybridní instruct-and-reasoning model s architekturou granulárního MoE, nativně podporující více jak 160 jazyků'. Model má přes jeden bilión parametrů, z nichž při práci využívá 49 miliard, kontextové okno o délce milion tokenů a obrazový enkodér o 1,6 miliardách parametrů.

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 2
    včera 03:22 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.

    Ladislav Hagara | Komentářů: 0
    včera 03:11 | Komunita

    Simon Long oznámil Raspberry Pi Desktop pro PC a Mac s Intelem postavený na aktualizovaném Debianu 13 Trixie. S klientem Raspberry Pi Connect pro vzdálenou správu. Ke stažení je vedle Raspberry Pi OS pro Raspberry Pi.

    Ladislav Hagara | Komentářů: 2
    8.10. 21:33 | Zajímavý projekt

    ESP32-C3 adblock přemění lacinou vývojovou desku ESP32‑C3 na samostatný DNS blokovač nejenom reklamních domén, minimalistickou alternativu k populárnímu Pi-hole. ESP32-C3 adblock místo objemných názvů domén ukládá jejich 40-bitové FNV-1a hashe do flash paměti, které pak binárně prohledává, kontrola jedné domény trvá přibližně 10 milisekund. Blocklist pojme až 537 tisíc domén a lze jej spravovat přes webové rozhraní. Projekt zatím

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 0
    8.10. 21:00 | Zajímavý software

    ArtCraft je sada open source aplikací pro práci s obrázky a videi "inspirovaných" aplikacemi od Adobe. Napsaných v Rustu. Pro MacOS, Windows i Linux. Běží také ve webovém prohlížeči. Aktuálně se jedná o 7 aplikací: PhotoCraft (Photoshop), VectorCraft (Illustrator), FilmCraft (Premiere Pro), LightCraft (Lightroom), PdfCraft (Acrobat), EffectCraft (After Effects) a DesignCraft (InDesign). Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 8
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2821 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: PYTHON - Jak rozlišit chybu ve vyjímce

    23.5.2015 21:39 Karlos
    PYTHON - Jak rozlišit chybu ve vyjímce
    Přečteno: 983×
    Chtěl bych se zeptat, zda je možné pomocí vyjímky zjistit následující ?
    try:
       getfile('test.py')
    except:
       print 'ERROR!'
       print 'Soubor test.py neexistuje'
    except:
       print 'ERROR!'
       print 'Soubor test.py existuje, ale obsahuje syntaxní chybu'
    except:
       print 'ERROR!'
       print 'Soubor test.py existuje, neobsahuje syntaxní chybu ale proměnná VAR neexistuje'
    except:
       print 'ERROR!'
       print 'Soubor test.py existuje, neobsahuje syntaxní chybu, proměnná VAR existuje ale je prázdná'
    Děkuji za rady

    Řešení dotazu:


    Odpovědi

    FrostyX avatar 23.5.2015 21:53 FrostyX | skóre: 27 | blog: Frostyho_blog | Olomouc
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Ahoj, už minule ti někdo radil, abys řekl, co se vlastně snažíš udělat. Takhle bez kontextu se radí blbě.

    Všechny ty výjimky má vyhazovat getfile? Jak getfile zjistí něco o syntaktické chybě? Proč načítáš py soubor pomocí getfile? O co tam jde s tou proměnnou VAR?

    Jediný, co ti můžu takhle říct, je, že tvůj kód by ti vždycky skočil do prvního except bloku. Pokud jich chceš mít víc, tak musí každý z nich odchytávat jinou výjimku. Takže např
    try:
        # ...
    except IOError:
        # ...
    except OSError:
        # ...
    except Exception:
        # ...
    
    FrostyX.cz | 1984 was not supposed to be an instruction manual.
    23.5.2015 22:33 Karlos
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Díky
    už minule ti někdo radil, abys řekl, co se vlastně snažíš udělat.
    jj, proto jsem to tak rozepsal..
    Všechny ty výjimky má vyhazovat getfile?
    nee, chtěl bych aby je vyhodil systém, getfile je jen moje funkce a ta nic nevyhazuje
    O co tam jde s tou proměnnou VAR?
    pokud bude prázdná ta proměnná nebo nebude existovat, nemám z čeho vycházet/script nemá na základě čeho dál pokračovat
    23.5.2015 22:58 chrono
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Výnimka AttributeError sa vyhodí keď nebude existovať akýkoľvek atribút, ktorý sa tam niekde použije, nemusí ísť len o atribút VAR, takže je rozumnejšie pri tom načítaní otestovať, čo tam je ten atribút a vyhodiť tú výnimku pomocou raise (a nespoliehať sa na to, že napr. kvôli nejakému preklepu sa zobrazí chybná chybová hláška). To isté platí aj pre prázdnu premennú.

    Každopádne ja by som to, či nastane výnimka pri otvorení konkrétneho súboru riešil priamo tam, kde sa pokúšam ten súbor otvárať, pretože inak sa môže stať, že nastane výnimka pri otváraní iného súboru na úplne inom mieste programu (ale možno to nie je vhodné pre to čo robíš, to ale netuším, keďže stále neviem, čo vlastne robíš, každopádne v Python sa to takmer určite dá urobiť inak a lepšie ;) ).
    23.5.2015 23:13 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Proměnná VAR přece neexistuje. Nevidím důvod pro vypisování tohoto stavu.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    23.5.2015 23:20 chrono
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Ak budem chcieť k tomu atribútu / k tej premennej pristupovať, tak nastane výnimka (a ak k nej nebudem chcieť pristupovať netuším, aký zmysel by malo, ak by niekedy existovala). Ale ako som už písal, to, čo by sa tam malo použiť záleží od toho, čo presne to má robiť.
    23.5.2015 23:45 Karlos
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Potřebuji načíst soubor, ve kterém je nadefinovaná proměnná VAR. A potřebuji vypsat chybu pokud takový soubor neexistuje, nebo proměnná VAR v souboru neexistuje, nebo není plná nebo soubor obsahuje syntaxickou chybu. Myslel jsem, že vyjímky na to budou nejlepší.
    23.5.2015 23:49 chrono
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    To už vieme, ale stále netušíme, prečo sa to má načítavať ako kód (a keď už to musí byť kód, prečo to nemôže byť normálny kód, ktorý by sa načítal pomocou import). :)

    Ak ide len o to, aby sa vypísala chyba, že súbor neexistuje, tak to sa zvyčajne rieši tak, že sa dá open do try/expect bloku (a okrem toho, že ten súbor nebude existovať, nemusí byť čitateľný, môže existovať adresár s rovnakým názvom, ... a to môže vyvovať iné výnimky).
    24.5.2015 00:15 Karlos
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Aha, tak jinak, ze souboru ze kterého chci získat proměnnou VAR se jmenuje pokaždé jinak a taky obsahuje jiné hodnoty uložené ve VAR, jen název proměnné je stále stejný. Do svého scriptu potřebuji v cyklu získávat tyhle souboru a z nich získávat obsah proměnných VAR. Pomocí import to nejde, jelikož mám název souboru v proměnné a to import neumí.
    filename = 'file.py'
    import filename
    Díky
    24.5.2015 00:24 Karlos
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Ještě doplním, že názvy souborů obsahují i mezery...
    24.5.2015 00:26 chrono
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Prečo musí byť v tom súbore uložená nejaká informácia práve do premennej? Nestačí, aby ten súbor obsahoval text, json, yaml, csv, ... a načíta sa to pomocou príslušných funkcií (a v takom prípade by bolo úplne jedno, ako sa ten súbor volá a či sú v názve medzery).
    24.5.2015 11:14 Karlos
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Prečo musí byť v tom súbore uložená nejaká informácia práve do premennej? Nestačí, aby ten súbor obsahoval text, json, yaml, csv, ... a načíta sa to pomocou príslušných funkcií (a v takom prípade by bolo úplne jedno, ako sa ten súbor volá a či sú v názve medzery).
    Pokud bych upravil script, tak bych mohl načítat potřebná data jako text, navíc bych tak mohl spojit více akcí v jednu a do jednoho souboru uložit více informací a načíst je v jednom místě všechny naráz.Asi by to bylo i lepší. otázkou je jaký přínos to bude mít pro můj stávající dotaz.
    24.5.2015 11:51 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Jde o to, že Python má přímou podporu pro mnoho formátů souborů a dovede je exportovat i importovat. Stačí si vybrat jeden z formátů a spoustu problémů nemusíš řešit, protože to už vyřešil někdo před tebou.

    Pokud nám tedy sdělíš strukturu souboru, který chceš načíst a co z něj chceš načíst, tak ti poradíme, jak to udělat na několika řádcích - nebo třeba jen na jednom.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    24.5.2015 14:45 Karlos
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Pokud nám tedy sdělíš strukturu souboru, který chceš načíst a co z něj chceš načíst, tak ti poradíme, jak to udělat na několika řádcích - nebo třeba jen na jednom.
    A máš na mysli něco konkrétního tou strukturou ? Nebo stačí, že tem budou jen texty čísla a cesty k souborům ? Dík
    24.5.2015 14:59 NN
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Nemohl by jsi prozradit co to vlastne cele bude? Na cem to pracujes? Konretni informace. Dost to vetsinou ulehci situaci.. Ie. zpracovavam vystup z aplikace X, ktera generuje Y a vystup ukladam do Z atd. Dosad za XYZ.
    24.5.2015 16:19 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Nemám na mysli nic konkrétního s tou strukturou. Vlastně tu strukturu ani nepotřebuji znát.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    24.5.2015 16:42 chrono
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Čo sa ale má do tých súborov ukladať? Má tam ísť jeden údaj, nejaká tabuľka....
    pavlix avatar 24.5.2015 02:56 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Jsou způsoby pomocí imp, případně ve 3.x importlib nebo na druhou stranu pomocí exec, open() a .read(), ale zásadní otázkou zůstává proč a od toho se všechno odvíjí.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    7.7.2015 12:20 sarimak
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    A nepomohlo by neco jako:

    import importlib

    dynamicky_nacteny_modul = importlib.import_module(nazev_modulu_jako_string)

    print(dynamicky_nacteny_modul.__dict__[nazev_promenne_jako_string])
    8.7.2015 07:54 Sajfi | skóre: 8
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Tak šlo by to zcela jednoduše, bude soubor foo.py a v něm:
    VAR = 111
    Pak v Pythonu stačí:
    
    import imp
    mod = imp.loadsource('foo', 'foo.py')
    print mod.VAR
    
    Je to ale VELMI špatný nápad, co když ve foo.py bude něco navíc, třeba smazání home? Importem to Python provede.
    
    import subprocess
    subprocess.call(['rm', '-rf', '/cesta/k/memu/home/'])
    VAR = 111
    
    Takže jak bylo výše, co třeba JSON? Bude soubor foo.json:
    {"VAR": 111}
    A v Pythonu stačí:
    
    import json
    foo = json.load(open('foo.json', 'r'))
    print foo['VAR']
    
    Bystroushaak avatar 19.7.2015 22:31 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: PYTHON - Jak rozlišit chybu ve vyjímce
    Je to ale VELMI špatný nápad, co když ve foo.py bude něco navíc, třeba smazání home? Importem to Python provede.
    Dá se k tomu použít ast.literal_eval().

    Založit nové vlákno • Nahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.