Re: [python] progress bar na stahovanie velkeho suboru z githubu
Ahoj, zkusil bych si říct přímo o binární data: req = requests.get(file_url, allow_redirects=True, stream=True, headers={"Accept": "application/vnd.github.v3.raw"}) Viz https://developer.github.com/v3/git/blobs/#custom-media-types S requests ani GITem ale nedělám. Nicméně tohle mi jsem v rychlosti otestoval a fungovalo mi Zdraví Michal Dne 08.05.2018 v 11:01 ZdPo Ster napsal(a): Ahojte, viem stiahnut velky subor z z githubu takto: file_content = requests.get(file_url, allow_redirects=True) file_data = base64.b64decode(file_content.content) open(output, 'wb').write(file_data) Kedze to dlho trva, chcem tam implementovat progressbar a tu zacinaju moje problemy ;-). Nasiel som ze by malo fungovat nieco taketo: file_size = 19335882 # toto viem vopred req = requests.get(file_url, allow_redirects=True, stream=True) block_size = 1024 num_bars = file_size / (block_size*2) bar = Bar(f'Downloading {filename}', max=num_bars, suffix='%(percent).1f%% - %(eta)ds') bytes_transferred = 0 with open(output, "wb") as file: for chunk in req.iter_content(chunk_size=block_size): bytes_transferred+= len(chunk) if chunk: file.write(chunk) bar.next() bar.finish() print(bytes_transferred) Moje problem: Velkost prenesenych dat nesedi s velkostou suboru (26640760 vs 19335882 t.j. progress bar nezobrazuje korektny progress) z dovodu, ze github namiesto suboru posiela subor zabaleny v json a encodovany v base64. Workaround by mohol byt, ze ak viem velkost finalneho suboru, pokusim sa vypocitat velkost json filu (req.headers.get('Content-Length') v tomto pripade na githube nefunguje :-( ). Z neho by som po stiahnuti do pamate extrahoval content, dekodoval ho a az potom ulozil... Otazkou je ci nie je inteligentnejsi sposob ako to urobit... PS: moja testovacia url je: https://api.github.com/repos/tesseract-ocr/tessdata/git/blobs/b01dab8de8174496a0012bf85296943b3e7c81d7 Zd. ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Porovnání některých Ruby a Pythonu 3
Á, to máte pravdu. Navíc kdovíproč tam jako na jediném místě bylo "array", zatímco všechny ostatní příklady v té části používají "pole". Tak jsem to upravil a sjednotil. Jinak, takových porovnání jsou samozřejmě docela mraky, hned v úvodní části mám odkazy na asi sedm jiných :) Dne 30.03.2018 v 11:01 starenka . napsal(a): Stacilo :) - 'aknerats'[::-1] On Fri, Mar 30, 2018, 11:01 Jirka Vejrazka <jirka.vejra...@gmail.com <mailto:jirka.vejra...@gmail.com>> wrote: Ja ted na web nemuzu, ale nestacilo by "array[0] if array else None?" Jirka *From: *starenka . *Sent: *Friday, 30 March 2018 10:31 *To: *Konference PyCZ *Reply To: *Konference PyCZ *Subject: *Re: [python] Porovnání některých Ruby a Pythonu 3 Ahoj, dik za odkaz, uz sem takovy veci videl (tusim ze tam byl i perl a php jeste), ale je to zajimavy! Je nejakej duvod, proc vsude, kde resis neco s polem je 'array[0] if len(array) > 0 else None' na misto kratsiho a stejne citelnyho 'array[0] if len(array) else None' ? s. - 'aknerats'[::-1] On Mar 30, 2018 09:34, "Michal Molhanec" <mol-pyt...@seznam.cz <mailto:mol-pyt...@seznam.cz>> wrote: Ahoj, sepsal jsem porovnání některých prvků Ruby a Pythonu 3: http://mol.users.sourceforge.net/rb-py.html Může se to hodit všem, co jeden z těhle jazyků znají a chtějí se naučit ten druhý (nebo někoho takového vy učíte). Ale myslím si, že ten text může být i zajímavý pro ty, kteří jsou začátečníci-mírně pokročilí v jednom z nich, protože v některých věcech jde relativně do hloubky. A nebo naopak pro ty, které jednoduše zajímá, jak se věci dělají jinde. Vzniklo to jako neplánovaný výsledek mojí diplomky, což byl překladač Ruby do Pythonu 3. Uvítám jakékoli připomínky a bugreporty (jo, v IE 11 se to nezobrazuje správně, to je ale wontfix :) ). Enjoy :) ___ Python mailing list python@py.cz <mailto:python@py.cz> http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz ___ Python mailing list python@py.cz <mailto:python@py.cz> http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
[python] Porovnání některých Ruby a Pythonu 3
Ahoj, sepsal jsem porovnání některých prvků Ruby a Pythonu 3: http://mol.users.sourceforge.net/rb-py.html Může se to hodit všem, co jeden z těhle jazyků znají a chtějí se naučit ten druhý (nebo někoho takového vy učíte). Ale myslím si, že ten text může být i zajímavý pro ty, kteří jsou začátečníci-mírně pokročilí v jednom z nich, protože v některých věcech jde relativně do hloubky. A nebo naopak pro ty, které jednoduše zajímá, jak se věci dělají jinde. Vzniklo to jako neplánovaný výsledek mojí diplomky, což byl překladač Ruby do Pythonu 3. Uvítám jakékoli připomínky a bugreporty (jo, v IE 11 se to nezobrazuje správně, to je ale wontfix :) ). Enjoy :) ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] sorted
Tak všechno zpět, blbě napsaný __lt__(). Za tip se sorted díky. Michal Dne 6.11.2014 v 10:18 Michal Molhanec napsal(a): Tak všechno zpět, blbě napsaný __lt__(). Za tip se sorted díky. Dne 5.11.2014 v 15:44 Petr Viktorin napsal(a): 2014-11-05 15:23 GMT+01:00 mol-pyt...@seznam.cz: Ahoj, už jsem asi oficiálně nechápavej. Python 3.4.2: users = list(sorted(map(exceptions.user_exception_decorator, users))) print(users) # 1 users = list(sorted(users)) print(users) # 2 V bodě 1 to vypíše seznam neseřazený; v bodě 2 seřazený. V users jsou instance třídy User s přetíženým __lt__. Co je exceptions.user_exception_decorator? Je možné že to vytváří objekty, které mají __lt__ definované jinak než chceš? Mimochodem, sorted() vrací vždycky seznam, není potřeba volat ještě list(). -- Zdraví, Michal Molhanec ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Tkinter
Ještě si zkontroluj, že ti tam nezbyl Tkinter.pyc. Dne 19.9.2014 21:58, joho...@gmail.com napsal(a): Dne úterý, 16. září 2014 8:45:37 UTC+2 starenka . napsal(a): Dobre ty! Toho sem si nevsim :) 'aknerats'[::-1] On Sep 15, 2014 11:38 PM, Michal Molhanec mol-p...@seznam.cz wrote: Ahoj, Tak jsem vše udělal ale stále mi to hazí chybu že nezná Tkinter zde je screen http://johonek.rajce.idnes.cz/Python#Tkinteroprava.jpg Už nevím co mám opravit aby se mi to už podařilo rozchodit :) Moc děkuji za rady ___ a] prejmenovat ten soubor z Tkinter.py na neco jinyho, aby fungoval ten import b] root=Tk() -- Zdraví, Michal Molhanec ___ Python mailing list pyt...@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz Tak jsem to zkusil a stale se mi to nedari rozchodit. Opet se mi objevuje ta a sama hlaska co jsem tu uz daval :( ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz -- Zdraví, Michal Molhanec ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Zacatecnik prosi o nalezeni a vysvetleni chyby
Dne 29.11.2013 20:07, pythoncaha napsal(a): Dobry den vsem v konferenci, jsem zde novy a dovolil bych si obcas nejaky zacatecnicky dotaz. Doufam, ze nikoho neurazim opravdu zakladnimi otazkami, ale verte, ze nez se zeptam, tak ztratim nekolik hodin pokusy... V souboru seznam.txt je kombinace cisel a jmen. Cislo je v souboru vzdy unikatni. Chtel jsem programem najit pozici cisla a pak si nacist nasledujici jmeno, ale hledani se mi nedari. Dale je asi problem pokud cislo zacina nulou, je pak povazovano za HEX hodnotu? Pouzivej raw_input, ne input v Pythonu 2 (v Pythonu 3 se raw_input prejmenoval na input). V pripade, ze soubor obsahuje dvojice cislo a slovo oddelene napr. mezerou a navzajem napr. koncem radku: cislo = raw_input(Zadej hledane cislo: ) print cislo # bylo zadano cislo? if cislo.isdigit(): # nacti soubor a rozdel ho do pole po jednotlivych slovech with open('seznam.txt', 'rt') as soubor: seznam = soubor.read().split() # v i bude index prvku v poli seznam for i, prvek in enumerate(seznam): if prvek == cislo: print seznam[i + 1] break # else u for se vykona v pripade, ze se v cyklu for nevykonalo break else: print 'Nenalezeno' else: print 'Neni zadano cislo' Zdraví, Michal Molhanec ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Začiatočník programuje, alebo čo som zostrojil a prečo to nefunguje
Dobrý den, 1) řádek zadanie == zoznam měl být předpokládám podmínka -- chybí zde if 2) test na příslušnost v poli dělá operátor in 3) není mi jasný smysl toho cyklu while True: 4) neukončujte program pomocí os.abort(), to platí i pro váš první příklad, pokud chcete ukončit předčasně program použijte sys.exit(), v tomto případě je ale IMHO lepší případný další kód umístit do funkce a prostě ji zavolat v případě úspěšné podmínky 5) pište mezery minimálně mezi print a řetězcem, lépe i za čárkou ap. import time print loading please wait\n,nahravam aplikaciu prosim cakajte\n time.sleep(5) print dnes je, time.ctime() zadanie = raw_input(zadajte vase meno prosim) print volate sa + zadanie zoznam = [diana, martin, stefan, alena, pavol, miro] if zadanie in zoznam: print vitajte v systeme matrix else: print prepacte vase meno nieje v zozname,pristup zamietnuty Zdraví, Michal Dne 9.10.2013 17:47, xteam napsal(a): Dobrý deň! Volám sa Martin a som úplný začiatočník. Kedže ukážky pythonu, sa my zapáčili rozhodol som sa v ňom experimentovať môj prví experiment ktorý aj funguje podla toho čo som od neho chcel je falošný terminál. priložím ho k tomu to textu v prilohe. Lenže chcel som doň napísať aj prístup to znamená na základe zadaného mena program rozhodne či spusti sa terminál (program pokračuje ďalej) alebo vypise sa hláška a program sa ukonci. Naschvál som to písal ako ďalší program pretože ak by fungoval stačilo by ho len z kopírovať pridať do prvého súboru lenže nefunguje buď je chyba v cykle while alebo v podmienke if potrebujem radu alebo ešte lepšie ukážku aby to fungovalo a program by na základe vstupu rozhodoval o sebe. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] How To again
Dobrá den, ještě jsem si vzpomenul, že minimálně tenhle překlad: http://tkinter.programujte.com/index.htm používá udělátko. Dne 21.8.2013 19:01, Tovim napsal(a): Ahoj Jane, Michale, Petrové, Jakube. Házím piškot do žita, vyměním jej za widget. Děkuji za připomínky Tovim -- Zdraví, Michal Molhanec ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] How To again
Dobrý den, já chci jenom upozornit, že control tj. ovládací prvek je ve světě Windows (já vím, fujky, fujky) ale také třeba wxWidgets/wxPythonu prostě libovolný prvek UI, tj. zcela to samé co widget v knihovnách původem pocházejících ze světa unixu. Osobně (čistě soukromý názor, který nikomu nevnucuji) nevidím důvod, proč nepoužívat ovládací prvek i pro překlad slova widget, je to zaběhlý termín, který často znají i neprogramátoři. Případně jenom prvek (uživatelského rozhraní), pokud se to zdá lepší. Jinak ve Swingu se používá termín komponenta, ten je úplně univerzální, i když mně se moc nelíbí (je dlouhý :-) ). Zdraví, Michal Molhanec Dne 21.8.2013 13:48, Petr Přikryl napsal(a): Přidávám se k názoru Petra Blahoše. Pojem by se měl překládat přesně. Nemusí to být 1:1, ale pojem v cílovém jazyce by měl být přesný pro čtenáře v cílovém jazyce. Souvisí to s představivostí, s abstraktním myšlením. Ne vždy se všechno překládá pečlivě s ohledem na srozumitelnost. To ale neznamená, že je to správně. Ovládací prvek by měl dělat to, co ten pojem říká. Label je widget, ale podle mého názoru to není ovládací prvek. Programátoři se nakonec stejně musí naučit anglicky (alespoň pasivně). Význam překladu odborného textu pro programátory (podle mého názoru) je dvojí: 1) pomůže začátečníkům, 2) pomáhá zvládnout složitější věci, protože složitější programátorské věci vyžadují představivost. Schopnost snadno si něco představit souvisí se znalostí jazyka (lidského jazyka jako takového) a se znalostí pojmů. Pokud pojem není možné snadno přeložit, často jej stačí obšírně vysvětlit (aby si čtenář vytvořil svou představu) a používat jej v originálním znění -- převzetí slova (skloňovat; tedy widget, widgetu,...) Programátor čte jak české, tak anglické texty. Pokud se to někde hemží zkratkami jako GUI, a pojmy widget, pak je těžké mentálně přecházet k textu, kde se to hemží GUR a piškot. Buď to má zůstat co nejpodobnější, nebo to musí dávat velmi dobrý smysl v češtině. Z mého pohledu je proto překlad pojmu label jako prvek GUI mnohen přijatelnější než ovládací prvek. Ale v textu -- pokud je to srozumitelné -- může přirozeněji působit méně rigidní překlad jako popis nebo popisný prvek. Při překladu se to někdy musí řešit opisem. Důležité ale je, aby ten opis stvořil programátor, protože se musí opsat mentální obraz, který odpovídá anglickému pojmu. (Proto stojí překlady odborných textů přeložené angličtináři s humanitním vzděláním často za prd.) P. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] cvičení z formátování řetězce
Dobrý den, Dne 7.2.2013 18:54, David Rohleder napsal(a): jak byste co nejhezčeji napsali následující - mám řetězec a chci jej po dvou znacích rozdělit dvojtečkou. Zatím nejzajímavější zápis, na který jsem přišel byl: a = abcdefghijkl (( %s:*(len(a)/2) ) % tuple(a[i:i+2] for i in xrange(0,len(a),2)))[:-1] Takto to vypadá dost nečitelně, zkusíte něco hezčího? ':'.join(a[i:i+2] for i in range(0,len(a),2)) nebo ta úloha zní, že tam musí být formátovací řetězec? -- Zdraví, Michal Molhanec ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] uvod
Dobry den, jenom chci poznamenat, ze ukoncovani pomoci os.abort() neni moc hezke a je v tomto pripade i zbytecne, protoze python se ukonci sam, kdyz dojde na konec skriptu. Pokud je potreba ukoncit skript explicitne, tak pomoci sys.exit() nebo vyhodit vyjimku SystemExit (coz je to, co udela ten sys.exit()). os.abort() urcite ma sva pouziti, ale na standardni ukoncovani to neni. -- Zdraví, Michal Molhanec ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] ssh klient pro python
Dne 12.8.2012 15:05, Petr Messner napsal(a): A nebo se podívat na modul ssh, který právě fabric používá a je to fork paramika. http://pypi.python.org/pypi/ssh/ https://github.com/fabric/fabric/issues/275 Wow, tohle https://github.com/bitprophet/ssh/commit/e37f0b57bd1cef9739c8c870bc954941b9fc4453 je legalni? Me to prijde jako pekna prasarna. -- Zdraví, Michal Molhanec ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] Oddělovač tisíců ve Windows a Python 3
Dobrý den, onehdy jsem si hrál s typem formátu :n v Pythonu 3: import sys if 1: import locale locale.setlocale(locale.LC_ALL,'czech') x=123456 s='{:n}'.format(x) if sys.version_info[0] = 3: f=open('formatn.txt','wt', encoding='utf-16') print(ascii(s)) else: f=open('formatn.txt','wt') print(repr(s)) f.write(s) f.close() Zatímco v Pythonu 2.7 to vrací A0, tj. nedělitelnou mezeru, což je v pořádku, v Pythonu 3.2 se z toho nějak stane FFA0, což mi přijde jako blbost. Tak teď nevím, jestli jsem natvrdlej já, nebo Python. Pak mě zaujalo, že s=u'{:n}'.format(x) v Pythonu 2.7 selže, což mi přijde jako poněkud absurdní. -- Zdraví, Michal Molhanec ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Python freeze a Vista UAC
Dne 12.6.2012 0:26, Radek Holý napsal(a): Pokusil jsem se... Díky. -- Zdraví, Michal Molhanec ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Python freeze a Vista UAC
Dobrý den, to zní užitečně, nechcete to přidat do wiki ? Dne 6.6.2012 23:30, Radek Holý napsal(a): Dobrý den, moc děkuju za postrčení. Získal jsem další klíčová slova pro hledání a nakonec jsem zjistil, že pro změnu manifestu stačí následující kód: import win32api # Load manifest. handle = win32api.LoadLibrary(PATH_TO_EXE) manifest = win32api.LoadResource(handle, 24, 1, 1033) win32api.FreeLibrary(handle) # Modify manifest (replacing 'requestedExecutionLevel level=asInvoker' by 'requestedExecutionLevel level=requireAdministrator'). # Save new manifest. handle = win32api.BeginUpdateResource(PATH_TO_EXE, 0) win32api.UpdateResource(handle, 24, 1, manifest, 1033) win32api.EndUpdateResource(handle, 0) Resp. toto stačí pro EXE soubory používané v cx_freeze. Nevím, jestli v jiných EXE souborech není třeba použít jiné identifikátory než 1 a 1033 ve funkcích ``win32api.LoadResource`` a ``win32api.UpdateResource``... -- Zdraví, Michal Molhanec ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] file.close
Dne 27.4.2012 10:55, zu1234 napsal(a): Mám takovýto problém: Postupně zapisuji do souboru v dočasném adresáři: try: FI.write(PART) except: FI.close chybejici zavorky jsou predpokladam jenom chyba v emailu? -- Zdraví, Michal Molhanec ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Parsování PNG
Dne 20.3.2012 13:09, Jakub Vojáček napsal(a): Dobrý den, pracuji na parseru PNG obrázků a narazil jsem na pár problémů s filtry. Postouji podle návodu http://www.root.cz/clanky/radkove-filtry-v-png/ a zasekl jsem se hned u prvního (sub) filtru. Nevím, jak mám reagovat to, když mi výsledek po odečtení podteče (například 128-255). To moc nechápu. Pokud PNG parsuješ, tj. čteš, tak neodečítáš, ale naopak zpátky přičítáš. Jinak je to ale klasická osmibitová bezznaménková aritmetika, tj. modulo 256, to máš IMHO správně. RGB nemůže mít záporné hodnoty, mám tedy na výsledek zavolat funkci abs? Podobný problém nastává, pokud výsledek přeteče (je vyšší než 255). Mám vše vyšší než 255 zaokrouhlovat na 255? Nebo mám použít modulo 256? Ani jedno z vyše uvedených mi myslím nefunguje správně, protože složky RGB by měly nabývat pouze hodnot 0, 128, 255 (jedná se o interpet jazkyka brainloller) a mně tam vznikají složky jako 1, 254, 127, ... možná spíš od sebe odečítáš špatná čísla :-) Také bych měl dotaz na čtvrtý filtr (filtr s paeth prediktorem). Mají se tam porovnávat pixely, ale jediný způsob, na který jsem přišel, jak porovnat pixely je sečíst všechny složky rgb (self.sum) a porovnávat je. Je to tak správně? Nenech se zmást, všechny filtry pracují na úrovni odpovídajících si bajtů, nikoli celých pixelů (pokud to náhodou není 8bitový čb nebo 8bitový s paletou, kdy bajt = pixel). Odpovídajícími míním, že se např. odečítá bajt zelené složky od dalšího bajtu zelené složky ap. -- Zdraví, Michal Molhanec ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] XML strom a XPath
Dne 19.8.2011 10:38, Stone napsal(a): from xml.etree import ElementTree xmltree = ElementTree.parse(/home/user/djcode/testlab/last_scan.xml) '''host = xmltree.findall('host')''' host = xmltree.findall('///status[@state=\'up\']/parent::*') print len(host) V Pyhonu 2.7 mi funguje host = xmltree.findall('.//status[@state=\'up\']/..') -- Zdraví, Michal Molhanec ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] email headers
Dne 27.7.2011 5:14, Ing. Vladislav Ludík napsal(a): A ještě toto mi nedá spát: jak zjistit obecně, které parametry se tak dají načíst z výše uvedené konstrukce z instance msg['parametr'] ? jestli myslíte seznam hlaviček, tak ten lze zjistit msg.keys() a dále: msg['date'] mi dá například výsledek: Mon, 25 Jul 2011 12:07:26 +0200 Je v Pythonu funkce na převod do formátu pro zapsání do tabulky mysql, v tomto příkladu by to mělo být: 2011-07-25 14:07:26 Zatím to dělám dvěma dotazy sql: SELECT STR_TO_DATE('Mon, 25 Jul 2011 12:07:26', '%a, %d %b %Y %T '); a následně z jeho výsledku: SELECT CONVERT_TZ('2011-07-25 12:07:26','+00:00','+02:00'); import datetime d=datetime.strptime('Mon, 25 Jul 2011 12:07:26 +0200', '%a, %d %b %Y %H:%M:%S +0200') d=d.replace(hour=d.hour+2) d.isoformat(' ') '2011-07-25 14:07:26' (ale v zásadě nevidím důvod, proč to nenechat na databázi, ty funkce STR_TO_DATE ap. lze přece volat rovnou při INSERTu) -- Zdraví, Michal Molhanec ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] email headers
Dne 26.7.2011 17:40, Ing. Vladislav Ludík napsal(a): Zdravím všechny znalé pythonu. Může mi někdo poradit s dekódováním hlaviček emailů ? Jde o toto: Ve složce /var/mail/ na linuxu přicházející emaily potřebuju elegantně zdekódovat. Co se týká vlastních zpráv, nemám problém: def ebox(inbox): 'Zpracuje email inbox' fp = open(inbox, 'rb') mbox = mailbox.UnixMailbox(fp, email.message_from_file) for msg in mbox: for part in msg.walk(): if part.get_content_maintype() == 'text': data = part.get_payload(decode=True) # zpracuju data Problém mám jen s hlavičkama. Když použiju například headers = Parser().parse(fp) tak ten ve výsledku dává při více zprávách za sebou vždy první nalezený objekt, ale další už ne: print 'To: %s' % headers['to'] print 'From: %s' % headers['from'] print 'Subject: %s' % headers['subject'] Můj dotaz tedy je: jak skloubit jednoduše obě funkce? Složitě to umím. Něco jako def ebox(inbox): 'Zpracuje email inbox' fp = open(inbox, 'rb') mbox = mailbox.UnixMailbox(fp, email.message_from_file) for msg in mbox: print 'To: %s' % msg['to'] print 'From: %s' % msg['from'] print 'Subject: %s' % msg['subject'] for part in msg.walk(): if part.get_content_maintype() == 'text': data = part.get_payload(decode=True) # zpracuju data by nefungovalo? ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] tisk
Dne 29.6.2011 21:38, g...@post.cz napsal(a): Dá se nějak poznat, ještě před tiskem print(), jestli půjde řetězec (v mém případě název souboru včetně cesty) vytisknout nebo ne? Napadá mě tisknout na zkoušku někam jinam print(neco, file=necojakovystupnacp852), ale nejsem si úplně jist, jak to udělat nejelegantněji. Nebo nějak zjišťovat, jestli znaky v řetězci se vyskytují v daném kodovaní (852) neco jako def povede(retezec): import sys try: retezec.encode(sys.stdout.encoding, 'strict') except UnicodeError: return False return True by nestacilo? ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] XML a ElementTree
Dne 13.5.2011 10:53, Vlastimil Slinták napsal(a): Díky, to pomohlo. Expandovat jmený prostor ‚dc’ na '{http://purl.org/dc/elements/1.1/}’ jsem zkoušel, ale chybělo mi .// O tom jsem se nikde nedočetl. XPath Support in ElementTree - http://effbot.org/zone/element-xpath.htm ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] XML a ElementTree
import xml.etree.ElementTree as ET tree = ET.parse('content.opf') print tree.findtext('.//{http://purl.org/dc/elements/1.1/}title') --- .// zpusobi, ze se bude hledat do hloubky {http://purl.org/dc/elements/1.1/} je jmenny prostor (nejake 'dc' je jen bezvyznamny prefix) Jine knihovny, treba: http://lxml.de/ ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] omezeni globalniho slovniku
Něco mi uniká? Články na py.cz jsou, wiki je to celý, na mail archív se dostanu z titulní stránky na dvě kliknutí. Design by mohl být lepší, ale kvůli tomu není potřeba měnit platformu. Problém přece není v technologii, ale v tom, kdo ty články bude psát. Proč je nikdo nepíše dneska? Jak donutíte lidi, aby je psali, když přejdete na CMS? Jestli vám přijde nepřehledná titulní stránka nebo struktura současného py.cz, tak to lze přece změnit. Dne 8.3.2011 17:52, Visgean Skeloru napsal(a): Zdravím, jak přesně je to míněno? py.cz http://py.cz by dle mého potřebovala nový portál, s články, wiki systémem, lehce přístupným mail archívem a nějakým novodobým designem... Šel by do toho někdo? Osobně mám velice malé zkušenosti s web designem ale trochu djanga zvládnu, chtělo by to více lidí... Měl by ještě někdo zájem přetvořit py.cz http://py.cz (ač nevím jak moc mám pravomoc podobnou možnost nabízet :) ) 2011/3/6 g...@post.cz mailto:g...@post.cz Visgean Skeloru napsal(a), dne 4.3.2011 19:26: Taky mam pocit že každý týden je tu jeden mail na téma: jak použít exec/eval, možná by to chtělo založit nějaké FAQ kde by bylo vyloženě napsáno ať to dělají jinak, nebo rovnou odkazovat na starší vlákna... btw: v souvislost s tím by možná nebylo na škodu opravit py.cz http://py.cz http://py.cz máš možnost ;-) ___ Python mailing list Python@py.cz mailto:Python@py.cz http://www.py.cz/mailman/listinfo/python -- PGP pub key: http://keyserver.pgp.com/vkd/SubmitSearch.event?SearchCriteria=visgean%40gmail.com http://www.abclinuxu.cz/lide/visgean/gpg A453 B7F3 33D9 3BE6 2B8A | F014 5347 EBAC 0A5A 3E92 Jabber: visg...@jabber.org mailto:visg...@jabber.org | visg...@jabber.cz mailto:visg...@jabber.cz Github: http://github.com/Visgean ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Stlačanie kláves
Dne Út 16. listopadu 2010 18:56:55 remixus79 napsal(a): Dobrý deň, mal by som zase raz jednu otázku. Dal by sa spraviť program taký že keď ho zapnem by stláčal klávesy ? Napríklad otvorim si notepad zapnem ten program a do notepadu by sa pisali písmená. Zagoogluj python sendkeys dostanes radu moznosti, staci si z nich jen vybrat ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Buffer overflow na Win7?
Dne Čt 15. července 2010 14:03:35 slush napsal(a): Super, moc diky. Tohle to aspon vysvetluje. 2010/7/15 Michal Molhanec mol-pyt...@seznam.cz: MSDN: When the r+, w+, or a+ access type is specified, both reading and writing are allowed (the file is said to be open for update). However, when you switch between reading and writing, there must be an intervening fflush, fsetpos, fseek, or rewind operation. The current position can be specified for the fsetpos or fseek operation, if desired. Zkousel jsem kde co - no hlavne jste nezkousel precist si MSDN :-) Tak ja v podstate hledal souvislost s pythonem, ne, ze to je vlastnost windows. Kdyz date do google klicove slovo python, MSDN Vam pravdepodobne nevyjede na prvni pozici :-). Jasně, ona to není ani tak vlastnost windows, ale vlastnost standardní C knihovny specifikovaná C standardem. Je pravda, že bych čekal, že to Python vyřeší sám napozadí, leč nestalo se. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] generator seznamu - TypeError: object cannot be interpreted as an index
On Mon, 18 Jan 2010 22:42:41 +0100 (CET) Lukas Lisa ch...@centrum.cz wrote: bez_n = [sluzby[x].nodeType == Node.ELEMENT_NODE for x in sluzby] bez_n = [x.nodeType == Node.ELEMENT_NODE for x in sluzby] ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] generator seznamu - TypeError: object cannot be interpreted as an index
Totiz kecam, On Mon, 18 Jan 2010 22:42:41 +0100 (CET) Lukas Lisa ch...@centrum.cz wrote: bez_n = [sluzby[x].nodeType == Node.ELEMENT_NODE for x in sluzby] bez_n = [x for x in sluzby if x.nodeType == Node.ELEMENT_NODE] ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Python pod dos-em
zu1234 napsal(a): Provozuje někdo python pod dos-em. DOS-em myslím dos před spuštěním W-98 (nevím jaká je to verze). Nemyslím tím dos-okno pod spuštěné z W-98. Co jsem (ne)našel: (www.python.org: Python for DOS - Python 2.4.2 for DOS/DPMI - - http://www.caddit.net/pythond/ - download - - http://home.exetel.com.au/python/pyd24210.zip - NOT FOUND :-(( No ja tu mam pyd24210.zip stazenej, takze ti ho teoreticky muzu nekam nahrat, ale mnohem lepsi reseni bude, kdyz napises autorovi tech stranek, ze mu nefunguje download. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Python pod dos-em
zu1234 napsal(a): Měl jsem trochu problém zjistit KOMU napsat. http://www.caddit.net/private/decker/resume.php Nakonec jsem napsal firmě jíž patří doména s pythond. Moc tomu ale nevěřím. Navíc to ve mně vyvolává dojem, že projekt Python for DOS je mrtev. To DOS taky :-) Byl bych ti vděčný kdyby to šlo někde vystavit. jestli ti neodpovi, tak napis, ja to zejtra nekam hodim Dělal jsi v tom něco? Ne :-) ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] for-else - wtf?
David Michal napsal(a): Mne se ta konstrukce libi. Nez-li psat neco jako: if nekde: for i in nekde: if nasel(i): print Nasel break else: print 'nenasel' Pozor, tohle dela neco uplne jinyho, ekvivalent puvodniho kodu je neco jako: nasel = False for i in nekde: if nasel(i): print Nasel nasel = True break if not nasel: print 'nenasel' Me se ta konstrukce docela libi, jenom bych to nenazyval else ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s unicode.
Pavel Kosina napsal(a): David Michal napsal(a): No pockej ale presne tohle tam mam: def out(text): print unicode(str(text) + '\n', 'utf8') tzn. Ze bych mel nejak zjistit kodovanu terminal jeste pred printem. To udelam jak ? Být tebou, ještě jednou prověřím, že je soubor, vlastně oba dva soubory (program i soubor s texty) skutečně v kodovani utf8. Tam se vznikají chyby nejvíce. Jinak terminály pod Linuxem bývají dnes utf-8, pod Windows cp852, takže pro windows platí: # -*- coding: utf-8 -*- text=Žlutý kůň textUnicode= unicode (str(text), utf-8) # převod na unicode print textUnicode # tiskne správně textTerminal = textUnicode.encode(cp852) # převod na kodovaní windows konsole print textTerminal # tiskne správně ja bych volil import sys textTerminal = textUnicode.encode(sys.stdout.encoding, 'ignore') to by mohlo fungovat vsude ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Rozměry textového okna
zu1234 napsal(a): Zdravím. Potřebuji přerušovat zobrazení delšího textu: Kde by si mohl python program bežící pod windows-y v textovém okně zjistit jeho (aktuální) rozměny (počet řádků s sloupců)? Pro Python s ctypes (od Pythonu 2.5 soucast standardni knihovny): def getConsoleWindowSize(): Return size of the console window on Windows as a tuple (width, height) or (None, None) if ctypes are not available or some error happens. try: import ctypes class COORD(ctypes.Structure): _fields_ = [(x, ctypes.c_short), (y, ctypes.c_short)] class SMALL_RECT(ctypes.Structure): _fields_ = [(l, ctypes.c_short), (t, ctypes.c_short), (r, ctypes.c_short), (b, ctypes.c_short)] class CONSOLE_SCREEN_BUFFER_INFO(ctypes.Structure): _fields_ = [(size, COORD), (cursorPosition, COORD), (attrs, ctypes.c_ushort), (win, SMALL_RECT), (maxWinSize, COORD)] info = CONSOLE_SCREEN_BUFFER_INFO() handle = ctypes.windll.kernel32.GetStdHandle(-11) ctypes.windll.kernel32.GetConsoleScreenBufferInfo(handle, ctypes.byref(info)) return (info.win.r - info.win.l + 1, info.win.b - info.win.t + 1) except: return (None, None) print getConsoleWindowSize() ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] inline if
Dusan Zatkovsky napsal(a): Ach, ruky su zase rychlejsie, ako hlava. Samozrejme na syntax X or Y som narazil, ale ja to mam este okorenene takto: d = { 'foo': 1, 'faa': 2 } x = d['foo'] or 1 y = d['faa'] or 2 z = d['neexistujuci_index'] or 3 Na tom 'z' to samozrejme raisne KeyError. Preto sa pytam, ci existuje nejaka moznost zapisat to inline, pretoze to chcem pouzit vo volanii funkcie. # takto teda nie :o) x = callSomeFunction ( d['foo'] or 1, d['faa'] or 2, d['neexistujuci_index'] or 3 ) misto d['klic'] pouzijte d.get('klic'), to v pripade neexistence klice vrati None, coz se vyhodnoti jako nepravda ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] lstrip
Hynek Beran napsal(a): Ahoj, mám script, který používá různé parametry. např. pyBackup.py --cfg=celyVyvoj.cfg ve scriptu mám : cfgFile = sys.argv[1].lstrip('--cfg=') očekával jsem, že mi takto napsaný řádek vrátí název souboru celyVyvoj.cfg . Uřízne to --cfg= Ale ono mi to vrátí elyVyvoj.cfg (odmaže i c znázvu souboru). Když tam zadám cokoli jiného do parametru , co nezačíná na c, tak to projde ... Pochopil jsem špatně funkce ? ano, pritom v manualu je explicitne vypichnuto, ze parametr neni prefix, ale mnozina znaku, dokonce i s prikladem: 'www.example.com'.lstrip('cmowz.') 'example.com' -- Regards, Michal ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python