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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 16:38 | Komunita

Byly zveřejněny videozáznamy přednášek a workshopů z letošní konference OpenAlt konané 5. a 6. listopadu v Brně. K videozáznamům lze přistupovat ze stránky na SuperLectures nebo přes program konference, detaily o vybrané přednášce nebo workshopu a dále kliknutím na ikonku filmového pásu. Celkově bylo zpracováno 65 hodin z 89 přednášek a workshopů.

Ladislav Hagara | Komentářů: 0
dnes 11:30 | Komunita

Bylo oznámeno, že bude proveden bezpečnostní audit zdrojových kódů open source softwaru pro implementaci virtuálních privátních sítí OpenVPN. Audit provede Matthew D. Green (blog), uznávaný kryptolog a profesor na Univerzitě Johnse Hopkinse. Auditována bude verze 2.4 (aktuálně RC 1, stabilní verze je 2.3.14). Audit bude financován společností Private Internet Access [reddit].

Ladislav Hagara | Komentářů: 2
dnes 06:00 | Komunita

Na YouTube byl publikován Blender Institute Reel 2016, ani ne dvouminutový sestřih z filmů, které vznikly za posledních 10 let díky Blender Institutu. V institutu aktuálně pracují na novém filmu Agent 327. Dění kolem filmu lze sledovat na Blender Cloudu. Videoukázka Agenta 327 z června letošního roku na YouTube.

Ladislav Hagara | Komentářů: 0
dnes 01:02 | Zajímavý článek

Minulý týden byly vydány verze 1.2.3 a 1.1.7 webového poštovního klienta Roundcube. V oznámení o vydání bylo zmíněno řešení bezpečnostního problému nalezeného společností RIPS a souvisejícího s voláním funkce mail() v PHP. Tento týden byly zveřejněny podrobnosti. Útočník mohl pomocí speciálně připraveného emailu spustit na serveru libovolný příkaz. Stejně, jak je popsáno v článku Exploit PHP’s mail() to get remote code execution z roku 2014.

Ladislav Hagara | Komentářů: 1
včera 16:00 | Nová verze

Byla vydána verze 0.98 svobodného nelineárního video editoru Pitivi. Z novinek lze zmínit například přizpůsobitelné klávesové zkratky. Videoukázka práce s nejnovější verzí Pitivi na YouTube.

Ladislav Hagara | Komentářů: 1
včera 15:00 | Zajímavý software

Stop motion je technika animace, při níž je reálný objekt mezi jednotlivými snímky ručně upravován a posouván o malé úseky, tak aby po spojení vyvolala animace dojem spojitosti. Jaký software lze pro stop motion použít na Linuxu? Článek na OMG! Ubuntu! představuje Heron Animation. Ten bohužel podporuje pouze webové kamery. Podpora digitálních zrcadlovek je začleněna například v programu qStopMotion.

Ladislav Hagara | Komentářů: 5
7.12. 21:21 | Nová verze Ladislav Hagara | Komentářů: 0
7.12. 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

Ladislav Hagara | Komentářů: 2
7.12. 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 10
6.12. 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 27
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 805 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

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: 602×
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 / Jeseník
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: 37 | 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: 37 | 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: 37 | 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: 53 | 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í.
GentooFedoraSCRAM – Jsem open source vývojář, nikoli markeťák ⇒ názory zde uvedené jsou jen mé vlastní.
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: 30 | 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áknoNahoru

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.