[python] problem s extendovanim
ahoj, extenduju (vlastne zaroven i embeduju) svuj c/c++ kod a mam otazku: lze nejak snadno i potom co vytvorim modul (Py_InitModule(char* name, PyMethodDef* methods)) doplnit jej o dalsi funkce (treba primo tabulku PyMethodDef)? Napada me modifikovat __dict__ modulu (vraceny PyObject*) ale to se mi zrovna 2x nezda. Python API je hodne rozsahle tak je mozne ze jen neco prehlizim. Poradi prosim nekdo? ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s argumentami pri volani metody instancie
abych tak nejak vysvetlil sve myslenkove pochody, s ohledem na zacatecnika.. kdyz si nadefinujeme funkci, ktera vraci svoje argumenty jako tuple: def f(*a): return a tedy potom f() nam vraci prazdny tuple (), f('x') nam da ('x',) a vytvorime tridu s metodou, ktera bude nasi funkci f class C: def f(*a): return a nebo v podstate analogicky zapis: class C: f = f a vytvorime instanci c: c = C() potom c.f() nam nedava prazdny tuple, ale vidime neco treba jako (<__main__.C instance at 0x7f8379f164d0>,) takto jsme se presvedcili, se se nam tam opravdu vklada jako prvni argument objekt ze ktereho volame, to zname "self" (take vidime, ze ho nemusime mit nikde napsane pod timto jmenem) pokud si vytvorime z nasi funkce f instanci objektu vyse zminovanaho Callable z MultipartPostHandler.py: class Callable: def __init__(self, obj): # klasicka inicializace, vyzaduje jeden argument.. # tento objekt se nam bude volat pri volani instance teto tridy self.__call__ = obj f_c = Callable(f) pak se nam f_c bude chovat stejne jako f (akorat, ze to neni objekt typu function) pokud ho pouzijeme analogicky v definici tridy: class C: f = f_c c = C() potom nam uz c.f() vraci prazdny tuple - uz se nam tam nevklada "self", chova se to, jako bychom meli class C: @staticmethod def f(*a): return a ... tak z techto duvodu se domnivam ze jde o hack, jak udelat statickou metodu. zamozrejme nemuzu vyloucit ze jsem autora MultipartPostHandler.py podcenil a nepochopil, a ze se jedna o nejake genialni reseni.., ktere ma jeste jine zavazne dusledky.. :-) m. On Jul 18, 2:53 am, Carry wrote: > Dakujem za odpoved. Myslim ze mate pravdu, aj ked tomu este nerozumiem. > Je mozne ze som tam pridal ten self sam, ale zistil som ze mam starsiu > verziu modulu ako je ta v odkaze (kde self v definicii nie je). Neviem > co znamena Callable, este som sa s tym nestretol, budem musiet > dostudovat tuto tematiku, vidim to poprve. Az teraz som si vsimol ze v > tom module je za definiciou nejake Callable, ktore spominate. Ako > vravim, zatial som skor uzivatel. V kazdom pripade pomohlo odstranit > self parameter z definicie a teda asi rozbehnut ten hack, ktoremu zatial > nerozumiem. Myslim ze ho zatial necham tak ako je, kedze funguje, > minimalne nez to pochopim... > > mykhal wrote: > > .. kdyz si znova ctu vas prispevek, tak to spis vypada, ze jste > > zkopirovat ten hack nezapomnel, ale pridal jste metode > > multipart_encode navic prvni argument self, coz je mozna trochu lepsi > > reseni. v tom pripade je ale potreba smazat > > multipart_encode = Callable(multipart_encode) > > a vubec celou tridu Callable > > > m. > > > On Jul 17, 6:05 pm, Carry wrote: > >> Zdravim, > > >> snazim sa pouzit vo svojom skripte modul MultipartPostHandler.py > >> (zhttp://odin.himinbi.org/MultipartPostHandler.py) pre posielanie http > >> requestov serveru ale python hlasi tuto chybu: > > >> File "...\MultipartPostHandler.py", line 79, in http_request > >> boundary, data = self.multipart_encode(v_vars, v_files) > >> TypeError: multipart_encode() takes at least 3 arguments (2 given) > > >> riadok 79 je toto volanie v metode objektu: > >> boundary, data = self.multipart_encode(v_vars, v_files) > > >> ...a signatura metody je: > >> def multipart_encode(self, vars, files, boundary = None, buf = None): > > >> Self sa predava implicitne a posledne dva parametre maju tiez implicitne > >> hodnoty, takze nechapem co mu vadi :-/ > > >> Prosim o zhovievavost, nakolko som v Pythone newbie. > >> Dopredu vdaka za Vase odpovede. > >> carry ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s argumentami pri volani metody instancie
Dakujem za odpoved. Myslim ze mate pravdu, aj ked tomu este nerozumiem. Je mozne ze som tam pridal ten self sam, ale zistil som ze mam starsiu verziu modulu ako je ta v odkaze (kde self v definicii nie je). Neviem co znamena Callable, este som sa s tym nestretol, budem musiet dostudovat tuto tematiku, vidim to poprve. Az teraz som si vsimol ze v tom module je za definiciou nejake Callable, ktore spominate. Ako vravim, zatial som skor uzivatel. V kazdom pripade pomohlo odstranit self parameter z definicie a teda asi rozbehnut ten hack, ktoremu zatial nerozumiem. Myslim ze ho zatial necham tak ako je, kedze funguje, minimalne nez to pochopim... mykhal wrote: .. kdyz si znova ctu vas prispevek, tak to spis vypada, ze jste zkopirovat ten hack nezapomnel, ale pridal jste metode multipart_encode navic prvni argument self, coz je mozna trochu lepsi reseni. v tom pripade je ale potreba smazat multipart_encode = Callable(multipart_encode) a vubec celou tridu Callable m. On Jul 17, 6:05 pm, Carry wrote: Zdravim, snazim sa pouzit vo svojom skripte modul MultipartPostHandler.py (zhttp://odin.himinbi.org/MultipartPostHandler.py) pre posielanie http requestov serveru ale python hlasi tuto chybu: File "...\MultipartPostHandler.py", line 79, in http_request boundary, data = self.multipart_encode(v_vars, v_files) TypeError: multipart_encode() takes at least 3 arguments (2 given) riadok 79 je toto volanie v metode objektu: boundary, data = self.multipart_encode(v_vars, v_files) ...a signatura metody je: def multipart_encode(self, vars, files, boundary = None, buf = None): Self sa predava implicitne a posledne dva parametre maju tiez implicitne hodnoty, takze nechapem co mu vadi :-/ Prosim o zhovievavost, nakolko som v Pythone newbie. Dopredu vdaka za Vase odpovede. carry ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s argumentami pri volani metody instancie
.. kdyz si znova ctu vas prispevek, tak to spis vypada, ze jste zkopirovat ten hack nezapomnel, ale pridal jste metode multipart_encode navic prvni argument self, coz je mozna trochu lepsi reseni. v tom pripade je ale potreba smazat multipart_encode = Callable(multipart_encode) a vubec celou tridu Callable m. On Jul 17, 6:05 pm, Carry wrote: > Zdravim, > > snazim sa pouzit vo svojom skripte modul MultipartPostHandler.py > (zhttp://odin.himinbi.org/MultipartPostHandler.py) pre posielanie http > requestov serveru ale python hlasi tuto chybu: > > File "...\MultipartPostHandler.py", line 79, in http_request > boundary, data = self.multipart_encode(v_vars, v_files) > TypeError: multipart_encode() takes at least 3 arguments (2 given) > > riadok 79 je toto volanie v metode objektu: > boundary, data = self.multipart_encode(v_vars, v_files) > > ...a signatura metody je: > def multipart_encode(self, vars, files, boundary = None, buf = None): > > Self sa predava implicitne a posledne dva parametre maju tiez implicitne > hodnoty, takze nechapem co mu vadi :-/ > > Prosim o zhovievavost, nakolko som v Pythone newbie. > Dopredu vdaka za Vase odpovede. > carry ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s argumentami pri volani metody instancie
vtip je v tom, ze jste asi zkopiroval definici funkce multipart_encode, ale zapomnel za ni uvest predefinovani pres tridu Callable, coz je zrejme osklivy hack, jak krkolomne vyrobit statickou metodu - tedy takovou, ktera neocekava jako prvni argument self bezneji se to dela tak, ze nad definici funkce se pouzije dekorator staticke metody: @staticmethod pripadne se pouzije starsi forma zapisu - pod definici funkce se doda: multipart_encode = staticmethod(multipart_encode) m. On Jul 17, 6:05 pm, Carry wrote: > Zdravim, > > snazim sa pouzit vo svojom skripte modul MultipartPostHandler.py > (zhttp://odin.himinbi.org/MultipartPostHandler.py) pre posielanie http > requestov serveru ale python hlasi tuto chybu: > > File "...\MultipartPostHandler.py", line 79, in http_request > boundary, data = self.multipart_encode(v_vars, v_files) > TypeError: multipart_encode() takes at least 3 arguments (2 given) > > riadok 79 je toto volanie v metode objektu: > boundary, data = self.multipart_encode(v_vars, v_files) > > ...a signatura metody je: > def multipart_encode(self, vars, files, boundary = None, buf = None): > > Self sa predava implicitne a posledne dva parametre maju tiez implicitne > hodnoty, takze nechapem co mu vadi :-/ > > Prosim o zhovievavost, nakolko som v Pythone newbie. > Dopredu vdaka za Vase odpovede. > carry ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] Problem s argumentami pri volani metody instancie
Zdravim, snazim sa pouzit vo svojom skripte modul MultipartPostHandler.py (z http://odin.himinbi.org/MultipartPostHandler.py) pre posielanie http requestov serveru ale python hlasi tuto chybu: File "...\MultipartPostHandler.py", line 79, in http_request boundary, data = self.multipart_encode(v_vars, v_files) TypeError: multipart_encode() takes at least 3 arguments (2 given) riadok 79 je toto volanie v metode objektu: boundary, data = self.multipart_encode(v_vars, v_files) ...a signatura metody je: def multipart_encode(self, vars, files, boundary = None, buf = None): Self sa predava implicitne a posledne dva parametre maju tiez implicitne hodnoty, takze nechapem co mu vadi :-/ Prosim o zhovievavost, nakolko som v Pythone newbie. Dopredu vdaka za Vase odpovede. carry ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s Tkinterom - pohyb stvorca v Canvasi kazdu sekundu
Ďakujem, funguje to 2009/7/5 martin jirasek > Ahoj, > v Tkinteru je funkce after > okno.after(ms, funkce) > > -- Michal ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] Problem s Tkinterom - pohyb stvorca v Canvasi kazdu sekundu
Ahoj, v Tkinteru je funkce after okno.after(ms, funkce) < Původní zpráva < Od: Michal M. < Předmět: [python] Problem s Tkinterom - pohyb stvorca v Canvasi kazdu sekundu < Datum: 05.7.2009 09:59:41 < < Ahoj, < ako sa dá urobiť v Tkinteri, aby sa každú sekundu posunul štvorec v Canvasi < o 10px dole? < Ďakujem < < < Michal < < < ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] Problem s Tkinterom - pohyb stvorca v Canvasi kazdu sekundu
Ahoj, ako sa dá urobiť v Tkinteri, aby sa každú sekundu posunul štvorec v Canvasi o 10px dole? Ďakujem Michal ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] problem s letnim casem pod windows
Lansky napsal(a), dne 13.1.2009 17:16: Zdravim, Mam problem pri nastaveni modify time souboru na hodnotu odpovidajici nejakemu letnimu casu. Cas nastavuju funkci os.utime(): http://www.py.cz/JakSePtat#nema-kej-odpov-d-t -- geon Pavel Kosina ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] problem s letnim casem pod windows
Zdravim, Mam problem pri nastaveni modify time souboru na hodnotu odpovidajici nejakemu letnimu casu. Cas nastavuju funkci os.utime(): >>> os.utime('2007_11_26\IMG_1944.JPG',(1178445665.0,1178445665.0)) >>> os.path.getmtime('2007_11_26\IMG_1944.JPG') 1178445665.0 >>> time.localtime(1178445665.0) (2007, 5, 6, 12, 1, 5, 6, 126, 1) >>> time.ctime(1178445665.0) 'Sun May 06 12:01:05 2007' Windows (i dosacky dir) zobrazuji u uvedeneho souboru cas 11:01, tedy o hodinu mene: D:\Projects\python\MediaFiles_tools\2007_11_26>dir Volume in drive D is Second Volume Serial Number is 365D-17C7 Directory of D:\Projects\python\MediaFiles_tools\2007_11_26 13.01.2009 15:27 . 13.01.2009 15:27 .. 06.05.2007 11:01 960 371 IMG_1944.JPG 1 File(s)960 371 bytes 2 Dir(s) 7 037 947 904 bytes free Pritom v Linuxu je vse OK a navic klon unixoveho programu ls pro windows taky zobrazuje spravnou hodnotu: D:\Projects\python\MediaFiles_tools\2007_11_26>ls --full-time total 940 -rwx--+ 1 lanskym mkpasswd 960371 2007-05-06 12:01:05.0 +0200 IMG_19 44.JPG Milan This e-mail and any attachment is for authorised use by the intended recipient(s) only. It may contain proprietary material, confidential information and/or be subject to legal privilege. It should not be copied, disclosed to, retained or used by, any other party. If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender. Thank you. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s forkujicim serverem a SIGTERM signalem
Dobry den, vzhledem k tomu, ze zde uz padlo reseni (ktere sam pouzivam, protoze jsem se jiz parkrat dostal do podobnych problemu), tak jen spekulace, proc se to chova tak, jak se chova. Predpokladam, ze funkce volana po zachyceni systemoveho signalu zajistuje separatni vlakno, nikoliv hlavni vlakno programu (fce cleanup se zavola nezavisle na tom,ve kterem stavu se hlavni vlakno nachazi). Podle dokumentace k sys.exit() tato funkce pouze vyvola vyjimku SystemExit. Zpracovani vyjimek se ale provadi pouze v ramci aktualniho vlakna, takze tato vyjimka "neprobubla" do jinych vlaken (hlavniho) a aplikace se logicky neukonci (pouze se ukonci aktualni vlakno). Predani jakehosi vnitrniho signalu (interni promenna) hlavnimu vlaknu je tedy spravny a korektni postup. Marek 2008/12/17 Lumír Jasiok > Dobry den, > > potreboval bych poradit s nasledujicim problemem. Mam napsany jednoduchy > forkujici TCP/IP server. Server jako takovy funguje, child procesy se > vytvareji i ukoncuji korektne, jediny probleme mam s ukoncenim parent > procesu v okamziku, kdy z (napriklad shellu) zavolam signal SIGTERM. Mam > osetreno zachyceni signalu a funkci, ktera zajisti, ze se pocka na ukonceni > vsech child procesu a pak by se mel ukoncit i parent proces pomoci > sys.exit(0). To se ale nestane, parent proces (server) se neukonci, ale > skoci do nadrazene while smycky a dale ceka na spojeni a je schopen > obsluhovat prichozi spojeni. Relevantni kod: > ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s forkujicim serverem a SIGTERM signalem
On Wed, Dec 17, 2008 at 03:01:50PM +, Jan Jakubuv wrote: > dobry den, > > muzete zkusit budto os._exit() anebo, lepe, se zkuste podivat jestli > vas problem neni stejny jako zde: > > http://mail.python.org/pipermail/python-list/2004-January/243227.html > > Jak se tam muzete docist tak sys.exit() pouze vyvolava vyjimku > SystemExit (proto neni nic videt na vystupu strace). Je mozne, ze ji > nekde omylem odchytite.. Z vlastni zkusenosti vim, ze vetsinou je lepsi pouzit try: . except Exception: nez pouze try: . except: protoze ta prvni varianta, propusti dve vyjimky, ktere temer nikdy nechci zachytavat a to KeyboardInterrupt a SystemExit. Tyto dve vyjimky maji bazovou tridu BaseException, takze je ``except Exception'' nezachyti. Vsechny ostatni vyjimky dedi az z Exception. Trida Exception je potomkem tridy BaseException. Radek Kaňovský, Dat, s.r.o. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s forkujicim serverem a SIGTERM signalem
V takovych okamzicich se vzdycky ptam sam sebe. Az si ten kod prectu po roce, cemu budu lepe rozumet? > > Neni to hezke, ale je to taky cesta. Co byste preferovali Vy? Prvni > moznost pres promennou sysexit, nebo "hrubou silu"? > > Lumir ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s forkujicim serverem a SIGTERM signalem
Lumír Jasiok wrote: Leos Pol wrote: To me privadi na myslenku, kdyz vidim ten try, jestli nechytas vyjimku SystemExit. David Michal wrote: Ja teda neumim vysvetlit proc nejde exit ale co to zkusit takhle: sysexit = False def cleanup(signal, frame): """Clean up the server before shutdown. """ # SIGTERM signal if signal == 15: print "Received SIGTERM signal, waiting for clients termination" while True: # In case that there isn't any active clients if not clients: break sysexit = True # Nadrazena smycka: while not sysexit: # Handle the child temination signal.signal(signal.SIGCHLD,reap) # Catch the SIGTERM signal signal.signal(signal.SIGTERM, cleanup) #signal.pause() try: connection,address = sock.accept() -Original Message- From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of Lumír Jasiok Sent: Wednesday, December 17, 2008 2:26 PM To: Konference PyCZ Subject: [python] Problem s forkujicim serverem a SIGTERM signalem Dobry den, potreboval bych poradit s nasledujicim problemem. Mam napsany jednoduchy forkujici TCP/IP server. Server jako takovy funguje, child procesy se vytvareji i ukoncuji korektne, jediny probleme mam s ukoncenim parent procesu v okamziku, kdy z (napriklad shellu) zavolam signal SIGTERM. Mam osetreno zachyceni signalu a funkci, ktera zajisti, ze se pocka na ukonceni vsech child procesu a pak by se mel ukoncit i parent proces pomoci sys.exit(0). To se ale nestane, parent proces (server) se neukonci, ale skoci do nadrazene while smycky a dale ceka na spojeni a je schopen obsluhovat prichozi spojeni. Relevantni kod: ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python Ne, SystemExit nezachytavam, jeste jednou jsem zkontroloval kod, tim to nebude. Jen ze zvedavosti zkusim prijit na to, co to zpusobuje. Pokud na to prijdu, zkusim tady dat vedet, kdyby nekdo narazil na stejny problem. Lumir Takze nakonec to jde vyresit i pridanim zachytavani SystemExit a naslednym (brutalnim SIGKILL signalem) takto: def cleanup(signal,frame): """Clean up the server before its shutdown. """ # SIGTERM signal if signal == 15: print "Received SIGTERM signal, waiting for clients termination" while True: # In case that there isn't any live clients if not clients: break try: sys.exit(0) except SystemExit: os.kill(os.getpid(),9) except: traceback.print_exc Neni to hezke, ale je to taky cesta. Co byste preferovali Vy? Prvni moznost pres promennou sysexit, nebo "hrubou silu"? Lumir -- Lumír Jasiok VSB-TU Ostrava - Computer centre Tel: +420 59 732 3189 E-mail: lumir.jas...@vsb.cz http://www.vsb.cz ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s forkujicim serverem a SIGTERM signalem
Leos Pol wrote: To me privadi na myslenku, kdyz vidim ten try, jestli nechytas vyjimku SystemExit. David Michal wrote: Ja teda neumim vysvetlit proc nejde exit ale co to zkusit takhle: sysexit = False def cleanup(signal, frame): """Clean up the server before shutdown. """ # SIGTERM signal if signal == 15: print "Received SIGTERM signal, waiting for clients termination" while True: # In case that there isn't any active clients if not clients: break sysexit = True # Nadrazena smycka: while not sysexit: # Handle the child temination signal.signal(signal.SIGCHLD,reap) # Catch the SIGTERM signal signal.signal(signal.SIGTERM, cleanup) #signal.pause() try: connection,address = sock.accept() -Original Message- From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of Lumír Jasiok Sent: Wednesday, December 17, 2008 2:26 PM To: Konference PyCZ Subject: [python] Problem s forkujicim serverem a SIGTERM signalem Dobry den, potreboval bych poradit s nasledujicim problemem. Mam napsany jednoduchy forkujici TCP/IP server. Server jako takovy funguje, child procesy se vytvareji i ukoncuji korektne, jediny probleme mam s ukoncenim parent procesu v okamziku, kdy z (napriklad shellu) zavolam signal SIGTERM. Mam osetreno zachyceni signalu a funkci, ktera zajisti, ze se pocka na ukonceni vsech child procesu a pak by se mel ukoncit i parent proces pomoci sys.exit(0). To se ale nestane, parent proces (server) se neukonci, ale skoci do nadrazene while smycky a dale ceka na spojeni a je schopen obsluhovat prichozi spojeni. Relevantni kod: ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python Ne, SystemExit nezachytavam, jeste jednou jsem zkontroloval kod, tim to nebude. Jen ze zvedavosti zkusim prijit na to, co to zpusobuje. Pokud na to prijdu, zkusim tady dat vedet, kdyby nekdo narazil na stejny problem. Lumir -- Lumír Jasiok VSB-TU Ostrava - Computer centre Tel: +420 59 732 3189 E-mail: lumir.jas...@vsb.cz http://www.vsb.cz ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s forkujicim serverem a SIGTERM signalem
dobry den, muzete zkusit budto os._exit() anebo, lepe, se zkuste podivat jestli vas problem neni stejny jako zde: http://mail.python.org/pipermail/python-list/2004-January/243227.html Jak se tam muzete docist tak sys.exit() pouze vyvolava vyjimku SystemExit (proto neni nic videt na vystupu strace). Je mozne, ze ji nekde omylem odchytite.. honza. 2008/12/17 Lumír Jasiok : > Dobry den, > > potreboval bych poradit s nasledujicim problemem. Mam napsany jednoduchy > forkujici TCP/IP server. Server jako takovy funguje, child procesy se > vytvareji i ukoncuji korektne, jediny probleme mam s ukoncenim parent > procesu v okamziku, kdy z (napriklad shellu) zavolam signal SIGTERM. Mam > osetreno zachyceni signalu a funkci, ktera zajisti, ze se pocka na ukonceni > vsech child procesu a pak by se mel ukoncit i parent proces pomoci > sys.exit(0). To se ale nestane, parent proces (server) se neukonci, ale > skoci do nadrazene while smycky a dale ceka na spojeni a je schopen > obsluhovat prichozi spojeni. Relevantni kod: > > def cleanup(signal,frame): > """Clean up the server before shutdown. > """ > # SIGTERM signal > if signal == 15: > print "Received SIGTERM signal, waiting for clients termination" > while True: > # In case that there isn't any active clients > if not clients: > break > print "toto se vypise" > sys.exit(0) > print "toto se nevypise" > > # Nadrazena smycka: > while True: > # Handle the child temination > signal.signal(signal.SIGCHLD,reap) > > # Catch the SIGTERM signal > signal.signal(signal.SIGTERM, cleanup) > #signal.pause() > try: > connection,address = sock.accept() > ... > > sys.exit(0) se proste neprovede, preskoci se a skoci do nadrazene smycky. > Kdyz zkusim pouzit strace, vidim, ze se provedou print prikazy, ale > sys.exit(0) uz ne. > > Zkousel jsem i terminaci parent procesu pomoci: > > os.kill (pid, signal.SIGKILL), kde pid je PID parent procesu, ale bez > uspechu. > > Nevite co muze byt pricinou problemu? > > Lumir > > -- > Lumír Jasiok > VSB-TU Ostrava - Computer centre > E-mail: lumir.jas...@vsb.cz > http://www.vsb.cz > > > > ___ > 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] Problem s forkujicim serverem a SIGTERM signalem
David Michal wrote: Ja teda neumim vysvetlit proc nejde exit ale co to zkusit takhle: sysexit = False def cleanup(signal, frame): """Clean up the server before shutdown. """ # SIGTERM signal if signal == 15: print "Received SIGTERM signal, waiting for clients termination" while True: # In case that there isn't any active clients if not clients: break sysexit = True # Nadrazena smycka: while not sysexit: # Handle the child temination signal.signal(signal.SIGCHLD,reap) # Catch the SIGTERM signal signal.signal(signal.SIGTERM, cleanup) #signal.pause() try: connection,address = sock.accept() Genialne jednoduche, jednoduse genialni. Funguje. Diky moc. Lumir -- Lumír Jasiok VSB-TU Ostrava - Computer centre Tel: +420 59 732 3189 E-mail: lumir.jas...@vsb.cz http://www.vsb.cz ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s forkujicim serverem a SIGTERM signalem
To me privadi na myslenku, kdyz vidim ten try, jestli nechytas vyjimku SystemExit. David Michal wrote: Ja teda neumim vysvetlit proc nejde exit ale co to zkusit takhle: sysexit = False def cleanup(signal, frame): """Clean up the server before shutdown. """ # SIGTERM signal if signal == 15: print "Received SIGTERM signal, waiting for clients termination" while True: # In case that there isn't any active clients if not clients: break sysexit = True # Nadrazena smycka: while not sysexit: # Handle the child temination signal.signal(signal.SIGCHLD,reap) # Catch the SIGTERM signal signal.signal(signal.SIGTERM, cleanup) #signal.pause() try: connection,address = sock.accept() -Original Message- From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of Lumír Jasiok Sent: Wednesday, December 17, 2008 2:26 PM To: Konference PyCZ Subject: [python] Problem s forkujicim serverem a SIGTERM signalem Dobry den, potreboval bych poradit s nasledujicim problemem. Mam napsany jednoduchy forkujici TCP/IP server. Server jako takovy funguje, child procesy se vytvareji i ukoncuji korektne, jediny probleme mam s ukoncenim parent procesu v okamziku, kdy z (napriklad shellu) zavolam signal SIGTERM. Mam osetreno zachyceni signalu a funkci, ktera zajisti, ze se pocka na ukonceni vsech child procesu a pak by se mel ukoncit i parent proces pomoci sys.exit(0). To se ale nestane, parent proces (server) se neukonci, ale skoci do nadrazene while smycky a dale ceka na spojeni a je schopen obsluhovat prichozi spojeni. Relevantni kod: ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python -- *Leoš Pol* senior programátor Lide.cz *Seznam.cz a.s.* Business Park, budova B Londýnské náměstí 2 639 00 Brno tel:+420 543 533 073 gsm:+420 777 901 087 email: leos@firma.seznam.cz <mailto:leos@firma.seznam.cz> www:http://www.seznam.cz ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s forkujicim serverem a SIGTERM signalem
Ja teda neumim vysvetlit proc nejde exit ale co to zkusit takhle: sysexit = False def cleanup(signal, frame): """Clean up the server before shutdown. """ # SIGTERM signal if signal == 15: print "Received SIGTERM signal, waiting for clients termination" while True: # In case that there isn't any active clients if not clients: break sysexit = True # Nadrazena smycka: while not sysexit: # Handle the child temination signal.signal(signal.SIGCHLD,reap) # Catch the SIGTERM signal signal.signal(signal.SIGTERM, cleanup) #signal.pause() try: connection,address = sock.accept() > -Original Message- > From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of > Lumír Jasiok > Sent: Wednesday, December 17, 2008 2:26 PM > To: Konference PyCZ > Subject: [python] Problem s forkujicim serverem a SIGTERM signalem > > Dobry den, > > potreboval bych poradit s nasledujicim problemem. Mam napsany > jednoduchy > forkujici TCP/IP server. Server jako takovy funguje, child procesy se > vytvareji i ukoncuji korektne, jediny probleme mam s ukoncenim parent > procesu v okamziku, kdy z (napriklad shellu) zavolam signal SIGTERM. > Mam > osetreno zachyceni signalu a funkci, ktera zajisti, ze se pocka na > ukonceni vsech child procesu a pak by se mel ukoncit i parent proces > pomoci sys.exit(0). To se ale nestane, parent proces (server) se > neukonci, ale skoci do nadrazene while smycky a dale ceka na spojeni a > je schopen obsluhovat prichozi spojeni. Relevantni kod: > ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] Problem s forkujicim serverem a SIGTERM signalem
Dobry den, potreboval bych poradit s nasledujicim problemem. Mam napsany jednoduchy forkujici TCP/IP server. Server jako takovy funguje, child procesy se vytvareji i ukoncuji korektne, jediny probleme mam s ukoncenim parent procesu v okamziku, kdy z (napriklad shellu) zavolam signal SIGTERM. Mam osetreno zachyceni signalu a funkci, ktera zajisti, ze se pocka na ukonceni vsech child procesu a pak by se mel ukoncit i parent proces pomoci sys.exit(0). To se ale nestane, parent proces (server) se neukonci, ale skoci do nadrazene while smycky a dale ceka na spojeni a je schopen obsluhovat prichozi spojeni. Relevantni kod: def cleanup(signal,frame): """Clean up the server before shutdown. """ # SIGTERM signal if signal == 15: print "Received SIGTERM signal, waiting for clients termination" while True: # In case that there isn't any active clients if not clients: break print "toto se vypise" sys.exit(0) print "toto se nevypise" # Nadrazena smycka: while True: # Handle the child temination signal.signal(signal.SIGCHLD,reap) # Catch the SIGTERM signal signal.signal(signal.SIGTERM, cleanup) #signal.pause() try: connection,address = sock.accept() ... sys.exit(0) se proste neprovede, preskoci se a skoci do nadrazene smycky. Kdyz zkusim pouzit strace, vidim, ze se provedou print prikazy, ale sys.exit(0) uz ne. Zkousel jsem i terminaci parent procesu pomoci: os.kill (pid, signal.SIGKILL), kde pid je PID parent procesu, ale bez uspechu. Nevite co muze byt pricinou problemu? Lumir -- Lumír Jasiok VSB-TU Ostrava - Computer centre E-mail: lumir.jas...@vsb.cz http://www.vsb.cz ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s metodou start_tls_s() v module python-ldap 2.3.5
Diky za odpoved. Bugreport som im dnes poslal. Re: [python] Problem s metodou start_tls_s() v module python-ldap 2.3.5 Jan Kundrát to: Konference PyCZ 06.10.2008 11:55 Sent by: [EMAIL PROTECTED] Please respond to Konference PyCZ [EMAIL PROTECTED] wrote: > CONNECT_ERROR: {'info': 'error:14090086:SSL > routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed', 'desc': > 'Connect error'} Nemas spravne nstavene certifikaty/CRL; obvykla chyba jsou chybejici certifikaty CA, kterou pouzivas, a nebo self-signed certifikat na serveru. Kterak to spravit budes mit popsano v dokumentaci knihovny OpenSSL. Pokud nahodou python-ldap neexportuje potrebne metody pro spravu ruznych SSL nastaveni, mas holt smulu, posli jim bugreport. Hezky den, -jkt -- cd /local/pub && more beer > /dev/mouth [attachment "signature.asc" deleted by Roman Miklos/RZB/PSS] ___ 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] Problem s metodou start_tls_s() v module python-ldap 2.3.5
[EMAIL PROTECTED] wrote: CONNECT_ERROR: {'info': 'error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed', 'desc': 'Connect error'} Nemas spravne nstavene certifikaty/CRL; obvykla chyba jsou chybejici certifikaty CA, kterou pouzivas, a nebo self-signed certifikat na serveru. Kterak to spravit budes mit popsano v dokumentaci knihovny OpenSSL. Pokud nahodou python-ldap neexportuje potrebne metody pro spravu ruznych SSL nastaveni, mas holt smulu, posli jim bugreport. Hezky den, -jkt -- cd /local/pub && more beer > /dev/mouth signature.asc Description: OpenPGP digital signature ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] Problem s metodou start_tls_s() v module python-ldap 2.3.5
Nainstaloval som si python-ldap-2.3.5.win32-py2.5.msi na Python 2.5Ked sa skusim pripojit k free LDAP-serveru (http://freeldap.org/) dostanem chybu: >>> import ldap>>> conn = ldap.initialize("ldap://ds1.us.freeldap.org:389")>>> conn.start_tls_s()Traceback (most recent call last): File "", line 1, in File "C:\Python25\lib\site-packages\ldap\ldapobject.py", line 532, in start_tls_s return self._ldap_call(self._l.start_tls_s) File "C:\Python25\lib\site-packages\ldap\ldapobject.py", line 96, in _ldap_call result = func(*args,**kwargs)CONNECT_ERROR: {'info': 'error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed', 'desc': 'Connect error'}ak nepouzijem conn.start_tls_s() tak pripojenie sa podari a mozem pracovat s datami z LDAPu.Nechcem ale data prenasat v klartexte a metoda start_tls_s() by prave mala zakryptovat spojenie, preto ma znepokojuje ze nefunguje. Chyba zrejme nebude v LDAP-serveri, pretoze podobny skript v perle s balikom Net::LDAP a metodou start_tls() mi funguje bez problemov. Dakujem za kazdy tip na odstranenie problemu. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s unicode.
> >No to trochu prehanis, sjednoceny byly graficky odlisne znaky se shodnym > >vyznamem. Aha, a proč jsou v Unicode zvlášť třeba indické číslice, zvlášť arabské, proč jsou tam některé číslice superscriptem, atd...? Proč když by stačilo tam tu jedničku mít jednou a ne v x možných podobách? Protože to co píšete, není pravda. Pravda je to co říkám, že sice Unicode consortium mlží tak, až se za ním práší - ve skutečnosti najdete v Unicode mnoho příkladů, kde je znak v jednom významu ve více podobách. Problém je prostě v "nemístném šetření bajtíků" - Unicode consortium začínalo na 16 bitech - a tak se jim tam všechny asijské znaky do tohoto rozsahu 65535 znaků prostě nevešly. Dnes je sice na 21 bitech, ale se znaky nad 16 bitovou hranicí má obrovská spousta systémů a programovacích jazyků problém, takže je nutné vše základní mít v 16 bitech. Prostě špatná práce a odhad Unicode consortia. A protože samozřejmě nechtěli nakrknout asijce - a asi víte, že nemohou říct naplno - "Víte my Unicode consortium jsme to špatně vymysleli celý ten systém Unicode, a někdo to holt odskákat musí. A rozhodli jsme se, že to odnesete Vy - a že jsme nuceni Vám Vaší abecedu zprznit, protože prostě na Vás dlabeme, nám se ta Vaše abeceda už do prostoru znaků nevejde a jiné státy by řvaly víc - oni nás totiž sponzorují víte? A chápete, že love, prachy, to je to co dneska hýbe světem, takže se přizpůsobte a polibte nám zadek". Ačkoli předchozí věty by na 100% odpovídaly pravdě, zajisté chápete, že na mezinárodní úrovni se takto nejedná, a je nutné vymyslet kladný důvod, kterým se to zastře a vysvětlí. A ten důvod je, že "Unicode sjednocuje znaky se stejným významem" - ale že je to lež jako věž Vás přesvědčí i letmý průchod Unicode tabulkami znaků. >Navic maji mnozi z CJK pocit, ze na ne byla unifikace v unicode uvalena systemem "o nas bez nas", ackoliv byli jejich zastupci v unicode kosorciu aktivni od zacatku. Japonsky zastupce (zamestnanec tusim DECu, tedy americke fimy a vyrazneho zastance unifikace) hlasoval pro unifikaci, korejci a cinani proti. Cela politicka stranka tehle zalezitosti je neprehledna a alespon trochu masla na hlave maji vsichni. No a čem píšu? Prostě Unicode to špatně vymyslelo, a někdo prostě to musel odnést, protože na všechny abecedy není v 16bitovém Unicode systému místo. A protože všichni, firmy i consortia se řídí prachama - tak to odnesl ten, kdo byl mimo - tedy Asiaté. Viz výše. Obecná rada: Musíte když něco čtete, číst mezi řádky a nenechat si nabulíkovat každou blbost. Miloslav Ponkrác ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s unicode.
Jan Vrana napsal(a): >> "šetření bajtíků stylem po nás potopa", jaká způsobilo problém třeba > >> roku 2000, a tatáž pitomost zamotala Unicode natolik, že ten bordel > >> je teď dost veliký. Takže pro asijské jazyky se převádějí znaky do >> Unicode přes proces zvaný "han unification" > [Honza Vrana] > Pokud tomu dobre rozumim tak neslo ani o setreni bajtiku tech by snad > pri 31 bitech na znak mohlo byt dost ale o to ze nejaky "chytrak" v > ramci uklidu sjednotil znaky ktere se mu jevily podobne jako kdyby nam > nekdo sjednotil treba nase i s teckou a carkou. No to trochu prehanis, sjednoceny byly graficky odlisne znaky se shodnym vyznamem. Lepsi priklad mi prijde jako kdyby Nemci psali porad svabachem, ale v unicode nebyl odlisny znak pro "A" a "svabachove A" - protoze je to hlaska "a" a rozliseni se da delat fontem. Plus teda spousta mene pouzivanych znaku v unicode chybi, zejmena starsi nabozenske a poeticke texy maji v unicode smulu - ale i nektere stale (byt mene) pouzivane znaky. Navic maji mnozi z CJK pocit, ze na ne byla unifikace v unicode uvalena systemem "o nas bez nas", ackoliv byli jejich zastupci v unicode kosorciu aktivni od zacatku. Japonsky zastupce (zamestnanec tusim DECu, tedy americke fimy a vyrazneho zastance unifikace) hlasoval pro unifikaci, korejci a cinani proti. Cela politicka stranka tehle zalezitosti je neprehledna a alespon trochu masla na hlave maji vsichni. S pozdravem, Ax ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s unicode.
>Pri cteni mne napada otazka jak tedy psat programy? Prostě Unicode nevyřešilo co mělo řešit. Ale alespoň udělalo jednu věc, že osekalo počet nutných znakových sad, které potřebujete k tomu plně vyjádřit pro všechny znaky - když jako jednu vezmete Unicode, pak pár asijských znakových sad a plus pár drobotin, tak de facto s pěti až deseti znakovými sadami vystačíte. Já osobně to řeším tak, že Unicode znaky mám 31 bitového a do horního prostoru si namapuji ty znaky, které se nevejdou do Unicode - ale předpokládá to svoje Unicode řešení. Pak mi můj "extended Unicode" string opravdu přenese vše. Jinak UTF-8 technicky dokáže zobrazit myslím až 36 bitové znaky (pouze normou je to omezené dříve na 32, později na 21 bitů, ale to je jen papírové omezení, nikoli omezení UTF-8 algoritmu), takže UTF-8 uloží i mojí "extended Unicode" sadu a ještě má velké rezervy. Miloslav Ponkrác ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] Problem s unicode.
diky za informace. Vim, ze ve vetsine pripadu s timto resenim uspeji. Ano, s asiatama a Klingonova budou mozna mensi problemy :) S ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s unicode.
> >Pokud tomu dobre rozumim tak neslo ani o setreni bajtiku tech by snad > >pri 31 bitech na znak mohlo byt dost ale o to ze nejaky "chytrak" v > Bacha! Unicode je definováno na 21 bitech a více ani mít nemůže! Protože pak by nefungovalo kódování UTF-16, které je de facto naprosto základní pro Windows, Javu, a další. A Unicode consortium nemůže jít proti gigantům IT průmysl, protože Ti by začali Unicode consortium ignorovat a to by se mohlo jít klouzat. Unicode začalo na 16 bitech a vytroubilo do světa, že Unicode rovná se 16 bitů a tím dalo consortium základ budoucímu bordelu, ačkoli každý logicky přemýšlející člověk asi tušil, že to jednou bude průser. Následkem toho už jen pijeme kalich hořkosti, který z této blbosti vzniknul - a omezení na 21 bitů u Unicode je tím nejmenším. Miloslav Ponkrác ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s unicode.
> "šetření bajtíků stylem po nás potopa", jaká způsobilo problém třeba > > roku 2000, a tatáž pitomost zamotala Unicode natolik, že ten bordel > > je teď dost veliký. Takže pro asijské jazyky se převádějí znaky do > Unicode přes proces zvaný "han unification" [Honza Vrana] Pokud tomu dobre rozumim tak neslo ani o setreni bajtiku tech by snad pri 31 bitech na znak mohlo byt dost ale o to ze nejaky "chytrak" v ramci uklidu sjednotil znaky ktere se mu jevily podobne jako kdyby nam nekdo sjednotil treba nase i s teckou a carkou. ale moc anglicky neumim takze pro zajemce: http://en.wikipedia.org/wiki/Han_unification H. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s unicode.
> V našich končinách to asi platí, ale ono není pravda, že Unicode dokáže > reprezentovat všechny znaky používaných znakových sad. Zvláště v Asii > velmi protestují proti používání Unicode - protože není s to > reprezentovat znaky jejich národních znakových sad. Proto třeba autor > Ruby (Japonec) nikdy nezavedl používání Unicode jakožto základní sady > pro řetězce v Ruby. Problém je největší pitomost v sw inženýrství zvaná > "šetření bajtíků stylem po nás potopa", jaká způsobilo problém třeba > roku 2000, a tatáž pitomost zamotala Unicode natolik, že ten bordel je > teď dost veliký. Takže pro asijské jazyky se převádějí znaky do Unicode > přes proces zvaný "han unification", což je de facto "ztrátová > komprese", která několik různých odlišných znaků mapuje na stejný jeden > Unicode znak - ztrácí se tím tedy informace a není divu, že Asiaté si o > Unicode myslí jen to nejhorší, a rozhodně Unicode nehodlají používat. > > Takže v našich končinách asi nenarazíte, ale v případě mezinárodního > programu byste se mohl rychle dostat do toho, že byste zásadně > přeprogramovával, a už by Vás to nikdy v budoucnu nenapadlo takhle > dělat. Pri cteni mne napada otazka jak tedy psat programy? ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s unicode.
> >Unicode je ideal pro prezentaci vsech znaku, ktery se musi nakonec prekodovat > >do bytoveho retezce (taky nazyvan plainstring, bytestring...). > > V našich končinách to asi platí, ale ono není pravda, že Unicode dokáže reprezentovat všechny znaky používaných znakových sad. Zvláště v Asii velmi protestují proti používání Unicode - protože není s to reprezentovat znaky jejich národních znakových sad. Proto třeba autor Ruby (Japonec) nikdy nezavedl používání Unicode jakožto základní sady pro řetězce v Ruby. Problém je největší pitomost v sw inženýrství zvaná "šetření bajtíků stylem po nás potopa", jaká způsobilo problém třeba roku 2000, a tatáž pitomost zamotala Unicode natolik, že ten bordel je teď dost veliký. Takže pro asijské jazyky se převádějí znaky do Unicode přes proces zvaný "han unification", což je de facto "ztrátová komprese", která několik různých odlišných znaků mapuje na stejný jeden Unicode znak - ztrácí se tím tedy informace a není divu, že Asiaté si o Unicode myslí jen to nejhorší, a rozhodně Unicode nehodlají používat. Takže v našich končinách asi nenarazíte, ale v případě mezinárodního programu byste se mohl rychle dostat do toho, že byste zásadně přeprogramovával, a už by Vás to nikdy v budoucnu nenapadlo takhle dělat. Miloslav Ponkrác ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] Problem s unicode.
Ahoj, resim Unicode tez, me postrehy: Unicode je ideal pro prezentaci vsech znaku, ktery se musi nakonec prekodovat do bytoveho retezce (taky nazyvan plainstring, bytestring...). vstup ---> decoding (e.g. ANSI) ---> Unicode ---> encoding (e.g. UTF8) ---> vystup Plati: unicodestring = u"Žlutý kůň." utf8string = unicodestring.encode ("utf-8") Jak dostat zvolene kodovani do vystupu, ktery pouziva napr. UTF-8: import codecs, sys sys.stdout = codecs.lookup ('utf-8')[1](sys.stdout) Ty si ve svem prikladu prevedl plainstring na Unicode pomoci UTF-8, ale pak je treba Unicode prekodovat znovu na plainstring podle zvoleneho kodovani. Stepan ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s unicode.
stavil by som sa ze 852 je default pre ceske wokna, kazdopadne sa da zmenit na cokolvek. utfg. pre utf8 je to 65001 S. Pavel Kosina wrote: 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ě ___ 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] Problem s unicode.
>Jinak terminály pod Linuxem bývají dnes utf-8, pod Windows cp852, takže Bohužel pro Windows není to pravidlo - možná v češtině ve Windows ano. Takže kód počítající s tímto kódováním může taky špatně dopadnout. Jinak do Windows konzole se dá psát jako ANSI řetězce, tak i Unicode řetězce, tedy Windows konzole umí přímé zobrazení Unicode znaků - alespoň v C++ to není problém, ale obávám se, že Python to nedokáže využít. Ale jak říkám, nezkoumal jsem to, ale pokud Python dává do Linuxové konzole Unicode a Windows se snaží ohnout na nějakou osmibitovou znakovou sadu (což Win API stejně jenom v konzoli emuluje a převede si to nejdřív vnitřně do Unicode), tak to není příliš dobrá vizitka pro schopnosti Pythonu. Miloslav Ponkrác ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s unicode.
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ě -- geon Pavel Kosina ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s unicode.
> Takže to by mělo fungovat textUnicode= unicode(text, kodovani souboru > se > stringy od uživatelů). Pokud nefunguje, je třeba převádět unicode před > tiskem ještě na kodovaní daného terminálu. Na běžné znaky by mělo > fungovat ... 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 ? ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s unicode.
David Michal napsal(a): > No jo, ale ja to prave potrebuju bez toho 'u' pred stringem. Ty stringy budou > brany z externiho souboru a budou psany uzivatelem. > Takže to by mělo fungovat textUnicode= unicode(text, kodovani souboru se stringy od uživatelů). Pokud nefunguje, je třeba převádět unicode před tiskem ještě na kodovaní daného terminálu. Na běžné znaky by mělo fungovat ... -- geon Pavel Kosina ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s unicode.
Přiznám se, že jsem to víc nezkoumal - a možná, že nebudu zcela v obraze, ale měl jsem pocit, že plné zobrazení UTF-8 na Windows zařídit nejde, a že vždy je riziko výjimky. Kdykoli narazil na znak, který nešel převést do výstupní znakové sady terminálu, pak výjimka okamžitě vystřelena. A že se takových znaků najde vždycky! Miloslav Ponkrác Pavel Kosina napsal(a): > David Michal napsal(a): > >> Zdravim, >> >> Porad mam problem se spravny zobrazenim textu v utf-8 na nekterych >> systemech. >> >> >> >> Jak zaridim aby mi kod dole fungoval na vsech masinach? >> >> >> >> #!/usr/bin/python >> >> #-*- coding: utf8 -*- >> >> >> >> def out(text): >> >> print unicode(str(text) + '\n', 'utf8') >> >> >> >> out('Žlutý kůň.') >> >> >> >> > > print u"Žlutý kůň" by mělo fungovat všude, samozřejmě pokud je soubor > uložen v kodovani utf8, které máš nadefinované v hlavičce. > více o češtině na py.cz > > ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s unicode.
No jo, ale ja to prave potrebuju bez toho 'u' pred stringem. Ty stringy budou brany z externiho souboru a budou psany uzivatelem. > > print u"Žlutý kůň" by mělo fungovat všude, samozřejmě pokud je soubor > uložen v kodovani utf8, které máš nadefinované v hlavičce. > více o češtině na py.cz > > -- > geon > Pavel Kosina ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s unicode.
David Michal napsal(a): > > Zdravim, > > Porad mam problem se spravny zobrazenim textu v utf-8 na nekterych > systemech. > > > > Jak zaridim aby mi kod dole fungoval na vsech masinach? > > > > #!/usr/bin/python > > #-*- coding: utf8 -*- > > > > def out(text): > > print unicode(str(text) + '\n', 'utf8') > > > > out('Žlutý kůň.') > > > print u"Žlutý kůň" by mělo fungovat všude, samozřejmě pokud je soubor uložen v kodovani utf8, které máš nadefinované v hlavičce. více o češtině na py.cz -- geon Pavel Kosina ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] Problem s unicode.
Zdravim, Porad mam problem se spravny zobrazenim textu v utf-8 na nekterych systemech. Jak zaridim aby mi kod dole fungoval na vsech masinach? #!/usr/bin/python #-*- coding: utf8 -*- def out(text): print unicode(str(text) + '\n', 'utf8') out('Žlutý kůň.') Na jednech windows mi to funguje, tam kde kde mam zapnutou volbu "language for non-Unicode programs" na Czech. Tam kde je to English tam mi kod skonci s vyjimkou. Na Linuxu mi to konci take s vyjimkou. Takze jak funkci out upravit tak aby si nejak zjistila locales a podle toho vypsala text? Diky, David ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s importem sqlite3.
nainstalovat ? odpoved by mohla byt zde: http://www.linuxquestions.org/questions/slackware-14/howto-build-python-with-sqlite-support-603848/ 10.3.08, David Michal <[EMAIL PROTECTED]>: > > > > > Zdravim, > > Na jednom slacku x86_64 potrebuji rozjet python 2.5 a sqlite. Mam pocit ze > jsem nainstaloval vse, tedy python, pysqlite a sqlite. Ale dostavam chybu: > > > > Python 2.5b3 (r25b3:51041, Feb 24 2008, 19:02:14) > > [GCC 3.4.6] on linux2 > > Type "help", "copyright", "credits" or "license" for more information. > > >>> import sqlite3 > > Traceback (most recent call last): > > File "", line 1, in > > File "/usr/local/lib/python2.5/sqlite3/__init__.py", line > 24, in > > from dbapi2 import * > > File "/usr/local/lib/python2.5/sqlite3/dbapi2.py", line > 27, in > > from _sqlite3 import * > > ImportError: No module named _sqlite3 > > > > Moc nevim co s tim. Pravda ze zadny soubor _sqlite3 na disku nemam ani neni > ve zdrojacich sqlite. > > > > Vite nekdo co s tim? > > > > Dik, > > David > > > ___ > 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
[python] Problem s importem sqlite3.
Zdravim, Na jednom slacku x86_64 potrebuji rozjet python 2.5 a sqlite. Mam pocit ze jsem nainstaloval vse, tedy python, pysqlite a sqlite. Ale dostavam chybu: Python 2.5b3 (r25b3:51041, Feb 24 2008, 19:02:14) [GCC 3.4.6] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sqlite3 Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python2.5/sqlite3/__init__.py", line 24, in from dbapi2 import * File "/usr/local/lib/python2.5/sqlite3/dbapi2.py", line 27, in from _sqlite3 import * ImportError: No module named _sqlite3 Moc nevim co s tim. Pravda ze zadny soubor _sqlite3 na disku nemam ani neni ve zdrojacich sqlite. Vite nekdo co s tim? Dik, David ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] problem s odkazem na promennou - VYRESENO
Diky moc za odpovedi. V podstate jsem hledal prikaz exec: exec('var01 = 1') Ale reseni s locals je taky moc super. To by mne asi nikdy nenapadlo:) locals()['var02'] = 2 Python je opravdu skvely!! This e-mail and any attachment is for authorised use by the intended recipient(s) only. It may contain proprietary material, confidential information and/or be subject to legal privilege. It should not be copied, disclosed to, retained or used by, any other party. If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender. Thank you. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] problem s odkazem na promennou
Ja bych to videl treba takhle: locals()['varname']='value' print varname I kdyz bych to takhle asi nepouzil, ale snazil bych se predem nedefinovane nazvy promennych zapouzdrit treba do slovniku samostatne tridy. LMA> Lze se v Pythonu odkazat na promenou jejiz nazev neni LMA> dopredu znam? LMA> Rekneme, jak nastavit promennou var01, kdyz mam k LMA> dispozici pouze LMA> retezec #8216;var01 #8217;? LMA> LMA> V bashi se to resi funkci LMA> eval: LMA> # nazev_promenne=var01 LMA> # eval $nazev_promenne=1 LMA> # echo $var01 LMA> 1 LMA> LMA> Dekuji za odpoved. -- Mirek N. http://www.unosoft.cz/ ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] problem s odkazem na promennou
Jde to treba pres exec: promena = "x" hodnota = "Ahoj svete" exec("%s=%s" % (promena,hodnota)) print x TB Lansky, Milan - Acision napsal(a): > > Lze se v Pythonu odkazat na promenou jejiz nazev neni dopredu znam? > > Rekneme, jak nastavit promennou var01, kdyz mam k dispozici pouze > > retezec ‘var01’? > > V bashi se to resi funkci eval: > > # nazev_promenne=var01 > > # eval $nazev_promenne=1 > > # echo $var01 > > 1 > > Dekuji za odpoved. > > > This e-mail and any attachment is for authorised use by the intended > recipient(s) only. It may contain proprietary material, confidential > information and/or be subject to legal privilege. It should not be > copied, disclosed to, retained or used by, any other party. If you are > not an intended recipient then please promptly delete this e-mail and > any attachment and all copies and inform the sender. Thank you. > > > ___ > 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] problem s odkazem na promennou
Podobne to ide aj v Perle: $nazev_promenne='var01'; $$nazev_promenne=1; print "\$nazev_promenne=$nazev_promenne,\n\$$nazev_promenne=$$nazev_promenne\n" Myslim si, ze v Pythone sa toto neda urobit. Ja by som v Pythone pouzil na ukladanie nazvov premennych a ich hodnot slovnik, asi takto >>> nazev_promenne={} >>> nazev_promenne['var01']=1 >>> print nazev_promenne "Lansky, Milan - Acision" <[EMAIL PROTECTED]> Sent by: [EMAIL PROTECTED] 06.03.2008 10:40 Please respond to Konference PyCZ To python@py.cz cc Subject [python] problem s odkazem na promennou Lze se v Pythonu odkazat na promenou jejiz nazev neni dopredu znam? Rekneme, jak nastavit promennou var01, kdyz mam k dispozici pouze retezec ‘var01’? V bashi se to resi funkci eval: # nazev_promenne=var01 # eval $nazev_promenne=1 # echo $var01 1 Dekuji za odpoved. This e-mail and any attachment is for authorised use by the intended recipient(s) only. It may contain proprietary material, confidential information and/or be subject to legal privilege. It should not be copied, disclosed to, retained or used by, any other party. If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender. Thank you. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python Mgr. Ing. Roman MIKLÓŠ Prvá stavebná sporiteľňa a.s. Bajkalská 30, P. O. Box 48 829 48 Bratislava 25 Tel.: +421/ 2 / 582 31 174 Fax: +421/ 2 / 582 31 109 Mgr. Ing. Roman MIKLÓŠ Prvá stavebná sporiteľňa a.s. Bajkalská 30, P. O. Box 48 829 48 Bratislava 25 Tel.: +421/ 2 / 582 31 174 Fax: +421/ 2 / 582 31 109 ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] problem s odkazem na promennou
Lze se v Pythonu odkazat na promenou jejiz nazev neni dopredu znam? Rekneme, jak nastavit promennou var01, kdyz mam k dispozici pouze retezec 'var01'? V bashi se to resi funkci eval: # nazev_promenne=var01 # eval $nazev_promenne=1 # echo $var01 1 Dekuji za odpoved. This e-mail and any attachment is for authorised use by the intended recipient(s) only. It may contain proprietary material, confidential information and/or be subject to legal privilege. It should not be copied, disclosed to, retained or used by, any other party. If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender. Thank you. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] problem
Připojuji se k poděkování za obsáhlou odpověď. -- Lukáš Linhart signature.asc Description: This is a digitally signed message part. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] problem
Dekuji za vycerpavajici odpoved. Jak sem psal nikdy jsem to nezkoumal a tak jsem se cerpal z mich predstav co by to delat melo. Uz na tom nedostatku casu na provedeni optimalizace me melo dojit ze to zadnej zazrak nebude. Jeste jednou dekuji za vysvetleni Honza Vrana ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] problem
> No pravda pokud je vynalozene usily nekonecne tak jiste neni problem ani > extremni varianta ze podle projevu to napisete znovu. No v případě Pythoního byte kódu je potřeba celkem malé úsilí. Věřte mi. > Nikdy jsem to nezkoumal ale predpokladam ze compilator se hlavne snazi > optimalizovat a urychlit zpracovani. Nejedna se tedy jen o nejake > zakodovani do necitelne formy. Zase další utopista. Zase další, co nohama není na zemi a pluje kdesi ve virtuální realitě. Tak znovu už po tisícté: Optimalizace stojí čas, čas a zase čas! Když kompilátor překládá třeba moje C++ zdrojáky, tak větší programy na velmi výkonném počítači do release (tedy optimalizované) verze je schopen překládat mnoho minut až hodin. Selským rozumem přijdete na to, že nastartujete Python a program jede - tedy ČASU NA OPTIMALIZACI PYTHON MOC NEMÁ. Je to odvěká bolístka všech interpretovaných programů, které cokoli optimalizují/kompilují za běhu programu - chybí jim ČAS na pořádnou optimalizaci, takže se optimalizuje naprosto minimálně, občas velmi často vůbec. Druhá věc je, že dobrá optimalizace je VELMI SLOŽITÝ SW PROBLÉM. Pro představu ve stávajících kompilátorech je 99% všeho kódu optimalizační jednotka. Je to to absolutně nejdůležitější, nejsložitější, nejnamakanější a to nejvíce machrovina, co můžete v sw napsat. Je tisíckrát jednodušší napsat jádro skvělého operačního systém, nebo třeba celý dokonalý interpretr Pythonu, ale je velmi až nechutně složité napsat dobrý neřku-li vynikající optimalizátor - je to IMHO ta nejvyšší meta jak dokázat svoje kvality jako programátor. Třetí a velmi podstatná věc je, že optimalizátory přímo magicky přitahují ty nejhorší možné druhy chyb. Samotný optimalizátor díky své složitosti a implementaci mnoha velmi sofistikovaných triků je vůbec problém odladit, ale musíte si uvědomit, že jakákoli chyba, která zůstane v optimalizátoru vlastně potencionálně způsobuje chybný běh a chybnou interpretaci všech programů v tomto jazyce/prostředí spuštěném. Proto se na spolehlivost optimalizátorů kladou obrovské názroky a většinou se raději udělá horší optimalizátor, než aby byl nespolehlivý. Chronicky nespolehlivé jsou třeba kompilátory firmy Borland, kde v případě chyby není občas od věci se podívat do strojáku, zda kompilátor skuečně přeložil co je ve zdrojovém kódu. Tedy čtvrtá věc - Python s dobrým optimalizátorem by měl asi tak stokrát až tisíckrát více řádek zdrojového kódu, než je nyní a jeho vývoj by stál příslušný násobek času. Vzhledem k tomu, že autor Pythonu stále řeší gramatické stromy a vnitřní reprezentaci syntaktického stromu - alespoň tak to pamatuji, když jsem dění v Pythonu sledoval - a vzhledem k tomu, že zdrojové kódu interpretetu Pythonu jsem studoval - mohu prohlásit, že optimalizace v Pythonu se blíží nula, není prakticky žádná. > Ale z kodu se odstrani vsechny nepotrebnosti jako jsou treba komentare, > nazvy promenych, bloky ktere nemuzou nikdy nastat (if(0==1):). Pokud alespoň pár hodin jste programoval v Pythonu a napsal v něm minimálně "Hello world program", tak jistě víte, že názvy proměnných jsou ve skutečnosti jen jména v prostoru jmen, a že vzhledem k povaze Pythonu dost dobře nelze odstraňovat jména proměnných a je dost ztížené i jejich falšování. Protože těžko vysvětlíte nadřazenému modulu, že se k proměnné pod pravým názvem jaksi nemohou dostat. Jinak odstraňování bloků, které nikdy nemohou nastat je možné, ale předpokládá to dost značnou inteligenci optimalizátoru - a pak platí ty věci co jsem psal o optimalizaci viz výše. > Optimalizator by mohl ke stejnymu kusu bytekodu dojit vice cestama. > Napriklad ruzne moznosti pro vytvoreni cyklu ktere ve vysledku mohou byt > zkompilovany stejne. Ano, to teoreticky mohl. Ale prosím, projděte si Python, jeho možnosti a bude Vám to jasné. Python moc záludností pro byte kód neskrývá, prakticky žádnou. > Takze to co dostanete dekompilaci se vasemu puvodnimu zdrojaku podoba, > stejne se to chova ale vas puvodni zdrojak to neni. Ne, původní zdroják to není, ale bude velice velice věrně odrážet původní zdroják. Zvláště v Pythonu dokonce i do takových detailů jako je třeba dodržení řádek zdrojového kódu (protože nucené odsazení a protože i v byte kódu jsou informace o řádkách zdrojového kódu a další věci). V podstatě po dekompilaci byte kódu získám velmi dobrý zdrojový kód, který mohu dále použít pro další vývoj programu a který se bude maximálně podobat originálnímu zdrojáku. Na 99,9% bude stejný s mírnými odchylkami. Názvy proměnných, objektů, funkcí, stejné konstrukce, naprosto stejné algoritmy jako originální zdroják., Odchylky budou naprosto nepodstatné. > Nebo opravdu compilator jen zakoduje zdrojak do strojove lepe citelneho > tvaru nad kterym uz nemusi provadet syntaktickou analyzu? V podstatě jste velmi blízko skutečnosti :-) Miloslav Ponkrác ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/p
Re: [python] problem
> Získaz z bytecode původní zdroják na 100% jde - > tedy "téměř původní" > zdroják. Je to jen otázkou ceny a času, který tomu > chcete věnovat - [ Honza Vrana ] No pravda pokud je vynalozene usily nekonecne tak jiste neni problem ani extremni varianta ze podle projevu to napisete znovu. Nikdy jsem to nezkoumal ale predpokladam ze compilator se hlavne snazi optimalizovat a urychlit zpracovani. Nejedna se tedy jen o nejake zakodovani do necitelne formy. Ale z kodu se odstrani vsechny nepotrebnosti jako jsou treba komentare, nazvy promenych, bloky ktere nemuzou nikdy nastat (if(0==1):). Optimalizator by mohl ke stejnymu kusu bytekodu dojit vice cestama. Napriklad ruzne moznosti pro vytvoreni cyklu ktere ve vysledku mohou byt zkompilovany stejne. Takze to co dostanete dekompilaci se vasemu puvodnimu zdrojaku podoba, stejne se to chova ale vas puvodni zdrojak to neni. Nebo opravdu compilator jen zakoduje zdrojak do strojove lepe citelneho tvaru nad kterym uz nemusi provadet syntaktickou analyzu? Honza Vrana ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] problem
Získaz z bytecode původní zdroják na 100% jde - tedy "téměř původní" zdroják. Je to jen otázkou ceny a času, který tomu chcete věnovat - pokud mě dostatečně zaplatíte, klidně Vám program na rekonstrukci zdrojáku z byte kódu napíšu. Ono je to u Pythonu trochu ztížené tím, že byte kód se mění každou verzi Pythonu, ale jak říkám, je to otázkou času . pokud někomu bude hrozit, že vydělá dostatečnou sumu, když zrekonstruuje zdroják Pythonu z byte kódu, tak ho to nezastaví. To jsou právě problémy, které se často řeší - je hezké používat interpretované jazyky postavení na byte kódu a virtuální mašině - jako je Python, Perl, Ruby, C#, Java, ale v podstatě to znamená, že svoje programy jsou téměř open source. Zrekonstruovat zdroják, nebo alespoň reverse engineeringem zjistit to co potřebujete je obrovsky snažší u takovýchto jazyků, než třeba u C, C++, Ada, Fortran, Asm a jiných kompilovaných programů. Veřejně se dokonce mluví o tom, že třeba .NET framework dostatečně nechrání duševní vlastnictví firem - protože každý manták, který pracuje jako pomocný uklízeč je schopen zrekonstruovat zdroják do použitelné podoby z byte kódu, zatímco u kompilovaných jazyků musíte být docela machr na skutečný reverse enginnering, zvláště pokud program se aktivně brání proti disassemblování a debugování. Miloslav Ponkrác Tomy novella napsal(a): > ahoj, > no ja som zas cital niekde na python.org, ze bytekod je naschval tak > spraveny, aby bolo znemoznene z neho ziskat povodny zdrojak... > takze aj ked existuje nejaky program na dekompilaciu, tak imho necakaj > ze ti vrati POVODNY zdrojak... > ___ > 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] problem
No ono záleží na tom co všechno ten bytecode v sobě má, většinou obsahuje i ten zdroják. Jinak bytecode sám o sobě je optimalizovaný podle toho s čím ten python spustíte. - Original Message - From: "Tomy novella" <[EMAIL PROTECTED]> no ja som zas cital niekde na python.org, ze bytekod je naschval tak spraveny, aby bolo znemoznene z neho ziskat povodny zdrojak... takze aj ked existuje nejaky program na dekompilaciu, tak imho necakaj ze ti vrati POVODNY zdrojak... ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] problem
ahoj, no ja som zas cital niekde na python.org, ze bytekod je naschval tak spraveny, aby bolo znemoznene z neho ziskat povodny zdrojak... takze aj ked existuje nejaky program na dekompilaciu, tak imho necakaj ze ti vrati POVODNY zdrojak... ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] problem
Jan Vrana napsal(a): > Ten exe soubor je v podstate zip. Myslim ze winzip jej rozpakuje. > Zabaleny jsou zkompilovane pyc soubory. > > jj, taky myslím, že stačí přejmenovat např. script.exe na script.zip a zipem si vytáhnout, co potřebuji ;-) -- geon Pavel Kosina ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] problem
Ten exe soubor je v podstate zip. Myslim ze winzip jej rozpakuje. Zabaleny jsou zkompilovane pyc soubory. Decompilovat by mohli jit timto http://www.python.org/doc//2.4/lib/module-dis.html a tady je nejaka online sluzba na decompilaci http://www.depython.net/ Honza Vrana - Original Message - From: "Roman Morong" <[EMAIL PROTECTED]> To: Sent: Friday, January 04, 2008 8:35 AM Subject: [python] problem Ahoj všem v pythonu sem si udělal pěkne scriptik pak sem ho hodil do exe a na web mezitim se mi soubo s scriptikem ztratil :( při reinstalu windowsu neno možnost jak z toho exe soubor zase vytvoři soubor py děkuji mororo S Pozdarev Roman Morong ___ 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] problem
Někde jsem zaslech že je možný získat zdroják z bytekódu, ale z binárky pochybuju... On Jan 4, 2008 8:35 AM, Roman Morong <[EMAIL PROTECTED]> wrote: > Ahoj všem v pythonu sem si udělal pěkne scriptik pak sem ho hodil do exe a > na web mezitim se mi soubo s scriptikem ztratil :( při reinstalu windowsu > neno možnost jak z toho exe soubor zase vytvoři soubor py děkuji mororo > > > > S Pozdarev Roman Morong > ___ > 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
[python] problem
Ahoj všem v pythonu sem si udělal pěkne scriptik pak sem ho hodil do exe a na web mezitim se mi soubo s scriptikem ztratil :( při reinstalu windowsu neno možnost jak z toho exe soubor zase vytvoři soubor py děkuji mororo S Pozdarev Roman Morong___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s odesláním ofrmuláře met odou POST
pavle neboj je to jen kvuli oznameni nové poště a utoku > Původní zpráva > Od: Pavel Kosina <[EMAIL PROTECTED]> > Předmět: Re: [python] Problem s odesláním ofrmuláře metodou POST > Datum: 07.10.2007 20:46:35 > - > Roman Morong napsal(a): > Takže sem udělal takovou prasarnu a nevim co a > jak :( jak dal bohužel > nepřihlá sí se > > myPost = > urllib.urlencode({"eba5c8b": "mororo", "e316d4e": "topgun", > > "autologin": "ja", "s1": "login"}) 1/ moc nevím, k čemu to máš, > snad to není na to, co myslím 2/ já osobně v html kodu vidím jiné názvy > inputů, než máš ty: />Jméno: />Heslo: name="ecf0abb" value="" maxlength="20" type="password"> /> />3/ kromě toho tam vidím ještě další hidden ... 4/ stejně nevím, jestli > když to všechno opravíš, jestli to bude fungovat ... />-- geon Pavel Kosina />___ Python mailing list />Python@py.cz http://www.py.cz/mailman/listinfo/python > S Pozdarev Roman Morong___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s odesláním ofrmuláře met odou POST
Diky ten nazev se nějak často mění :-D a jak ještě přidam text z proměny do "myPost = urllib.urlencode({"eba5c8b": "mororo", "e316d4 e": "291032708", "autologin": "ja", "s1": "login"})" tak misto mororo bych chtel promenu nick ale nějak ne a ne se mi to povect, zatim diky > -------- Původní zpráva > Od: Pavel Kosina <[EMAIL PROTECTED]> > Předmět: Re: [python] Problem s odesláním ofrmuláře metodou POST > Datum: 07.10.2007 20:46:35 > - > Roman Morong napsal(a): > Takže sem udělal takovou prasarnu a nevim co a > jak :( jak dal bohužel > nepřihlá sí se > > myPost = > urllib.urlencode({"eba5c8b": "mororo", "e316d4e": "topgun", > > "autologin": "ja", "s1": "login"}) 1/ moc nevím, k čemu to máš, > snad to není na to, co myslím 2/ já osobně v html kodu vidím jiné názvy > inputů, než máš ty: />Jméno: />Heslo: name="ecf0abb" value="" maxlength="20" type="password"> /> />3/ kromě toho tam vidím ještě další hidden ... 4/ stejně nevím, jestli > když to všechno opravíš, jestli to bude fungovat ... />-- geon Pavel Kosina />___ Python mailing list />Python@py.cz http://www.py.cz/mailman/listinfo/python > S Pozdarev Roman Morong___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s odesláním ofrmuláře met odou POST
Roman Morong napsal(a): > Takže sem udělal takovou prasarnu a nevim co a jak :( jak dal bohužel > nepřihlá sí se > > myPost = urllib.urlencode({"eba5c8b": "mororo", "e316d4e": "topgun", > "autologin": "ja", "s1": "login"}) 1/ moc nevím, k čemu to máš, snad to není na to, co myslím 2/ já osobně v html kodu vidím jiné názvy inputů, než máš ty: Jméno: Heslo: 3/ kromě toho tam vidím ještě další hidden ... 4/ stejně nevím, jestli když to všechno opravíš, jestli to bude fungovat ... -- geon Pavel Kosina ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] Problem s odesláním ofrmuláře met odou POST
Takže sem udělal takovou prasarnu a nevim co a jak :( jak dal bohužel nepřihlá sí se import urllib import urllib2 import cookielib import os.path def installCookies(f): global cj, COOKIE_FILE cj = cookielib.LWPCookieJar() if os.path.exists(f): cj.load(f) COOKIE_FILE = f opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) urllib2.install_opener(opener) def saveCookies(): cj.save(COOKIE_FILE) installCookies('cookies.dat') myPost = urllib.urlencode({"eba5c8b": "mororo", "e316d4e": "topgun", "autologin": "ja", "s1": "login"}) data = urllib2.urlopen("http://s5.travian.cz/dorf1.php";, myPost) datas = data.read() data.close() print datas.count('11800') # kolik je tam slov '11800' raw_input() S Pozdarev Roman Morong___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem pri build Extension.
Dobry den, nauvod si neodpustim pripominku, ze neni spatne psat subject. Takhle se muze ztratit vas prispevek mezi ostatnimy (no subject). K vasemu problemu: myslim, ze je zrejme, ze system nenalezl kompilator gcc. Zkuste prikaz echo %PATH% v prikazove radce. Melo by tam byt \MinGW/bin;\MinGW\lib;\MinGW\include; kde je cesta k adresari MinGW (napr C:\). Leo [EMAIL PROTECTED] wrote: > > Tady je spuštěný můj program v cmd: > > D:\Python25>python "c++-python.py" build -c mingw32 > running build > running build_ext > building 'demo' extension > gcc -mno-cygwin -mdll -O -Wall -ID:\Python25\include -ID:\Python25\PC > -c spam.cp > p -o build\temp.win32-2.5\Release\spam.o > error: command 'gcc' failed: No such file or directory > > > > A tady je kód programu: > > from distutils.core import setup, Extension > > module1 = Extension('demo', > sources = ['spam.cpp']) > > setup(name = 'PackageName', > version = '1.0', > description = 'This is a demo package', > ext_modules = [module1]) > > > > Tento program má načíst soubor c++, děkuji za jakoukoliv rad. > > > > ___ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python -- Leos Pol SW Engineer Radiante Corp. If it can be imagined, we can implement it ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] problem pri importu knihovny (dll)
Stáhněte si prohlížeč závislostí ( http://www.dependencywalker.com/ ) a zkuste jestli jsou všechny knihovny, které _fs.dll vyžaduje k dispozici (dostupné na cestě). Jan Matějka _ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED] Sent: Monday, February 26, 2007 2:46 PM To: Konference PyCZ Subject: Re: [python] problem pri importu knihovny (dll) dany adresar (libsvn) obsahuje: __init__.py __init__.pyc _client.dll _core.dll _delta.dll _fs.dll _ra.dll _repos.dll _wc.dll client.py core.py delta.py fs.py fs.pyc libsvn_swig_py-1.dll ra.py repos.py wc.py chyba nastane v tom fs.py na radku: import _fs -=( Alien21 )=- _ From: Jan Matejka [mailto:[EMAIL PROTECTED] To: 'Konference PyCZ' [mailto:[EMAIL PROTECTED] Sent: Mon, 26 Feb 2007 14:05:52 +0100 Subject: Re: [python] problem pri importu knihovny (dll) Shání se po _fs.pyd . To je přejmenovaná dll. Pokud je _fs.pyd kdispozici a přesto je problém, může být způsoben nepřítomností nějaké dll, na které _fs.pyd závisí. Jan Matějka _ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED] Sent: Monday, February 26, 2007 12:54 PM To: Python Subject: [python] problem pri importu knihovny (dll) dobry den, mel bych jeden dotaz. v pythonu sem naprosty amater. pokousim se rozchodit viewvc (webova nadstavba nad subversion systemem svn) pod windows. python bindings jsem nakopiroval do lib/site-sitepackages, do cesty pythonpath jsem pridal cestu k viewvc knihovnam. a ted pokud se pokousim viewvc "rozjed" (prohlidnout v prohlizeci) vyhodi to nasledujici chybu: An Exception Has Occurred Python Traceback Traceback (most recent call last): File "c:\web\subversion\viewvc\lib\viewvc.py", line 3629, in main request.run_viewvc() File "c:\web\subversion\viewvc\lib\viewvc.py", line 253, in run_viewvc import vclib.svn File "c:\web\subversion\viewvc\lib\vclib\svn\__init__.py", line 25, in from svn import fs, repos, core, delta File "c:\Web\Python\lib\site-packages\svn\fs.py", line 19, in from libsvn.fs import * File "c:\Web\Python\Lib\site-packages\libsvn\fs.py", line 5, in import _fs ImportError: No module named _fs v adresari: c:\Web\Python\Lib\site-packages\libsvn\ (soucast python bindings z svn ktery jsem prekopirovaval) zadny _fs.py neni, pouze _fs.dll , a ted nevim jestli mi nekde neco chybi, neco v cem je chyba. nemuze nekdo poradit? omlouvam se za trosku zmateny popis. -=( Alien21 )=- ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] problem pri importu knihovny (dll)
dany adresar (libsvn) obsahuje: __init__.py __init__.pyc _client.dll _core.dll _delta.dll _fs.dll _ra.dll _repos.dll _wc.dll client.py core.py delta.py fs.py fs.pyc libsvn_swig_py-1.dll ra.py repos.py wc.py chyba nastane v tom fs.py na radku: import _fs -=( Alien21 )=- _ From: Jan Matejka [mailto:[EMAIL PROTECTED] To: 'Konference PyCZ' [mailto:[EMAIL PROTECTED] Sent: Mon, 26 Feb 2007 14:05:52 +0100 Subject: Re: [python] problem pri importu knihovny (dll) Shání se po _fs.pyd . To je přejmenovaná dll. Pokud je _fs.pyd kdispozici a přesto je problém, může být způsoben nepřítomností nějaké dll, na které _fs.pyd závisí. Jan Matějka _ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED] Sent: Monday, February 26, 2007 12:54 PM To: Python Subject: [python] problem pri importu knihovny (dll) dobry den, mel bych jeden dotaz. v pythonu sem naprosty amater. pokousim se rozchodit viewvc (webova nadstavba nad subversion systemem svn) pod windows. python bindings jsem nakopiroval do lib/site-sitepackages, do cesty pythonpath jsem pridal cestu k viewvc knihovnam. a ted pokud se pokousim viewvc "rozjed" (prohlidnout v prohlizeci) vyhodi to nasledujici chybu: An Exception Has Occurred Python Traceback Traceback (most recent call last):File "c:\web\subversion\viewvc\lib\viewvc.py", line 3629, in main request.run_viewvc()File "c:\web\subversion\viewvc\lib\viewvc.py", line 253, in run_viewvc import vclib.svnFile "c:\web\subversion\viewvc\lib\vclib\svn\__init__.py", line 25, in from svn import fs, repos, core, deltaFile "c:\Web\Python\lib\site-packages\svn\fs.py", line 19, in from libsvn.fs import *File "c:\Web\Python\Lib\site-packages\libsvn\fs.py", line 5, in import _fs ImportError: No module named _fsv adresari: c:\Web\Python\Lib\site-packages\libsvn\ (soucast python bindings z svn ktery jsem prekopirovaval) zadny _fs.py neni, pouze _fs.dll , a ted nevim jestli mi nekde neco chybi, neco v cem je chyba. nemuze nekdo poradit? omlouvam se za trosku zmateny popis. -=( Alien21 )=- ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] problem pri importu knihovny (dll)
Shání se po _fs.pyd . To je přejmenovaná dll. Pokud je _fs.pyd kdispozici a přesto je problém, může být způsoben nepřítomností nějaké dll, na které _fs.pyd závisí. Jan Matějka _ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED] Sent: Monday, February 26, 2007 12:54 PM To: Python Subject: [python] problem pri importu knihovny (dll) dobry den, mel bych jeden dotaz. v pythonu sem naprosty amater. pokousim se rozchodit viewvc (webova nadstavba nad subversion systemem svn) pod windows. python bindings jsem nakopiroval do lib/site-sitepackages, do cesty pythonpath jsem pridal cestu k viewvc knihovnam. a ted pokud se pokousim viewvc "rozjed" (prohlidnout v prohlizeci) vyhodi to nasledujici chybu: An Exception Has Occurred Python Traceback Traceback (most recent call last): File "c:\web\subversion\viewvc\lib\viewvc.py", line 3629, in main request.run_viewvc() File "c:\web\subversion\viewvc\lib\viewvc.py", line 253, in run_viewvc import vclib.svn File "c:\web\subversion\viewvc\lib\vclib\svn\__init__.py", line 25, in from svn import fs, repos, core, delta File "c:\Web\Python\lib\site-packages\svn\fs.py", line 19, in from libsvn.fs import * File "c:\Web\Python\Lib\site-packages\libsvn\fs.py", line 5, in import _fs ImportError: No module named _fs v adresari: c:\Web\Python\Lib\site-packages\libsvn\ (soucast python bindings z svn ktery jsem prekopirovaval) zadny _fs.py neni, pouze _fs.dll , a ted nevim jestli mi nekde neco chybi, neco v cem je chyba. nemuze nekdo poradit? omlouvam se za trosku zmateny popis. -=( Alien21 )=- ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] problem pri importu knihovny (dll)
dobry den, mel bych jeden dotaz. v pythonu sem naprosty amater. pokousim se rozchodit viewvc (webova nadstavba nad subversion systemem svn) pod windows. python bindings jsem nakopiroval do lib/site-sitepackages, do cesty pythonpath jsem pridal cestu k viewvc knihovnam. a ted pokud se pokousim viewvc "rozjed" (prohlidnout v prohlizeci) vyhodi to nasledujici chybu: An Exception Has Occurred Python Traceback Traceback (most recent call last):File "c:\web\subversion\viewvc\lib\viewvc.py", line 3629, in main request.run_viewvc()File "c:\web\subversion\viewvc\lib\viewvc.py", line 253, in run_viewvc import vclib.svnFile "c:\web\subversion\viewvc\lib\vclib\svn\__init__.py", line 25, in from svn import fs, repos, core, deltaFile "c:\Web\Python\lib\site-packages\svn\fs.py", line 19, in from libsvn.fs import *File "c:\Web\Python\Lib\site-packages\libsvn\fs.py", line 5, in import _fs ImportError: No module named _fsv adresari: c:\Web\Python\Lib\site-packages\libsvn\ (soucast python bindings z svn ktery jsem prekopirovaval) zadny _fs.py neni, pouze _fs.dll , a ted nevim jestli mi nekde neco chybi, neco v cem je chyba. nemuze nekdo poradit? omlouvam se za trosku zmateny popis. -=( Alien21 )=- ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s regularnym vyrazom
> Petr Prikryl wrote: > > [EMAIL PROTECTED] > >> [...]'''CREATE TABLE IBPDDB071/R004660V > >> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, > >> LFDNR1 DECIMAL (3, 0) [...] );''' > > > > No jasně. Když jsou vevnitř závorky, tak to nemůže > > fungovat. Problém je principiální. Regulární výrazy > > obecně nemohou popisovat řetězce jazyků, které obsahují > > párové struktury. Možná se dají zpracovat nějaké speciální > > případy na základě dalších znalostí. > > > Presne tak. V tomhle pripade jsem si pohraval s myslenkou, > ktera by se dala zapsat matematicky asi takhle (pouze > pro retezec v zavorkach): > > A = {a-zA-Z0-9_, } > B = {0-9, } > C = (B*) > L = (A*+C*) > > Bohuzel, kdyz na to ted koukam, tak jazyk L neni regularni. > Presto si ale myslim, ze tento jazyk lze popsat gramatikou > popr. automatem. Jestli se pletu, opravte me prosim. No, mělo by to jít, protože tady jde o speciální případ. Jednak se používá nástroj pro "regulární výrazy s rozšířením". Při jeho překladu se buduje konečný automat (odhad), který má navíc jakoby globální proměnné (hodnoty skupin). Můžu předepsat non-greedy vyhodnocování. Zkoumaný řetězec navíc neobsahuje libovolně zanořené párové struktury, ale pouze dvě úrovně. Automat se tedy nemusí rozšiřovat až na obecnější, zásobníkový. Stačí ho trochu rozepsat a úroveň zanoření vyjádřit přechodem do jiné části automatu. Měl by tedy jít napsat i regulární výraz. pepr P.S. Nechce se mi do toho ;-) ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s regularnym vyrazom
Petr Prikryl wrote: > [EMAIL PROTECTED] > >> To som skusal ale neni to tak jednoduche. >> -- >> [...]'''CREATE TABLE IBPDDB071/R004660V >> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, >> LFDNR1 DECIMAL (3, 0) [...] );''' >> regexp_sql_create=\ >> re.compile(r"^\s*CREATE\s+TABLE\s+" >>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" >>r"\((?P.*?)\)\s*") >> > > No jasně. Když jsou vevnitř závorky, tak to nemůže > fungovat. Problém je principiální. Regulární výrazy > obecně nemohou popisovat řetězce jazyků, které obsahují > párové struktury. Možná se dají zpracovat nějaké speciální > případy na základě dalších znalostí. > > Presne tak. V tomhle pripade jsem si pohraval s myslenkou, ktera by se dala zapsat matematicky asi takhle (pouze pro retezec v zavorkach): A = {a-zA-Z0-9_, } B = {0-9, } C = (B*) L = (A*+C*) Bohuzel, kdyz na to ted koukam, tak jazyk L neni regularni. Presto si ale myslim, ze tento jazyk lze popsat gramatikou popr. automatem. Jestli se pletu, opravte me prosim. Leo -- Leos Pol SW Engineer Radiante Corp. If it can be imagined, we can implement it ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s regularnym vyrazom
No predsa to ide tym vyrazom od Lea, ktory som vcera prehliadol a na ktory ma upozornil Petr Hlavka Takze takto to funguje: -- import sys,re sql_statement='''CREATE TABLE IBPDDB071/R004660V (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1)NOT NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT ); Label on IBPDDB071/R004660V(PERSONNR IS 'PERSONNR', LFDNR1 IS 'LFDNR1', VOTYP IS 'VOTYP', BSSTAMMNR IS 'BSSTAMMNR', BSVNR IS 'BSVNR');''' regexp_sql_create=\ re.compile(r"^\s*CREATE\s+TABLE\s+" r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" r"\((?P[^;]*)\)") result=regexp_sql_create.search(sql_statement) if result == None: # CREATE TABLE statement not valid ! print "SQL CREATE TABLE statement is not valid !!!" sys.exit() else: # Parse data from RegExp library=result.group('library') print "Library=%s" % library table=result.group('file') print "Table=%s" %table table_field_def=result.group('tbl_field_def') print "Field Definitions=%s" % table_field_def -- dolezite je v regexpe toto: [^;]* - to znamena vsetky znaky okrem ; "Petr Prikryl" <[EMAIL PROTECTED]> Sent by: [EMAIL PROTECTED] 02.02.2007 13:24 Please respond to Konference PyCZ To "Konference PyCZ" cc Subject Re: [python] Problem s regularnym vyrazom [EMAIL PROTECTED] > To som skusal ale neni to tak jednoduche. > -- > [...]'''CREATE TABLE IBPDDB071/R004660V > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, > LFDNR1 DECIMAL (3, 0) [...] );''' > regexp_sql_create=\ > re.compile(r"^\s*CREATE\s+TABLE\s+" >r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" >r"\((?P.*?)\)\s*") No jasně. Když jsou vevnitř závorky, tak to nemůže fungovat. Problém je principiální. Regulární výrazy obecně nemohou popisovat řetězce jazyků, které obsahují párové struktury. Možná se dají zpracovat nějaké speciální případy na základě dalších znalostí. pepr ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python Mgr. Ing. Roman MIKLÓŠ Prvá stavebná sporiteľňa a.s. Bajkalská 30, P. O. Box 48 829 48 Bratislava 25 Tel.: +421/ 2 / 582 31 174 Fax: +421/ 2 / 582 31 109 ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s regularnym vyrazom
Super! - diky moc za ten priklad. Jeden dobry priklad ma vacsiu hodnotu ako 100 stran manualu :-) Roman Jan Janech <[EMAIL PROTECTED]> Sent by: [EMAIL PROTECTED] 02.02.2007 13:38 Please respond to Konference PyCZ To Konference PyCZ cc Subject Re: [python] Problem s regularnym vyrazom [EMAIL PROTECTED] wrote: > Predtym som cital ( > http://www.onlamp.com/pub/a/python/2006/01/26/pyparsing.html ) o module > pyparsing ( http://pyparsing.wikispaces.com/), ale zial nemal som cas sa > s tym zaoberat. Doteraz parsujem vsetko iba regularnymi vyrazmi. Zda sa mi > to najrychlejsie riesenie - i ked nie najlepsie a ma to tiez svoje hranice > a uskalia. > > Dik za info -o yapps-e som doteraz nepocul. > Nevidim dokumetaciu Yappsu na tej stranke. preto sa chcem spytat: > 1. aky je vstup pre Yapps? Nejako zapisana gramatika? > 2. pouzil si Yapps1 alebo Yapps2 > 3. Nemas nejaky kratky priklad ako si parsoval to SQL? > > s pozdravom > > Roman caw... kedysi som robil alter script generator pre mysql. nechcem to prikladat do prilohy, neviem ci by to preslo cez mailing list, tak som to vyvesil na http://st.fri.utc.sk/~janech/SQLAlterGenerator.tgz Pre teba je dolezity subor generator/SQLParser.g Ja som pred tym tiez parsoval vsetko cez regulare... ale hento mi dava omnoho viac moznosti > Na taketo veci sa hodia skor parser-generatory ako regularne vyrazy. Ja > pouzivam YAPPS (http://theory.stanford.edu/~amitp/yapps/). Konkretne SQL > som s nim uz parsoval. > > [EMAIL PROTECTED] wrote: >> Rad by som tymto oslovil odbornikov na regularne vyrazy. >> >> Extrahujem datove polia tabulky cez regularny vyraz takto: >> --- skript --- >> import sys,re >> >> sql_statement='''CREATE TABLE IBPDDB071/R004660V >> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 > DECIMAL >> (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1) NOT >> NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH >> DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT );''' >> regexp_sql_create=\ >> re.compile(r"^\s*CREATE\s+TABLE\s+" >>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" >>r"\((?P.*)\)\s*") >> >> result=regexp_sql_create.search(sql_statement) >> if result == None: >> # CREATE TABLE statement not valid ! >> print "SQL CREATE TABLE statement is not valid !!!" >> sys.exit() >> else: >> # Parse data from RegExp >> library=result.group('library') >> print "Library=%s" % library >> table=result.group('file') >> print "Table=%s" %table >> table_field_def=result.group('tbl_field_def') >> print "Field Definitions=%s" % table_field_def >> konec skriptu >> >> Potom definicie dat. poli dalej pracovavam. >> Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE > >> TABLE (...); moze obsahovat aj LABEL ON (...); >> takze moze vyzerat takto: >> >> sql_statement='''CREATE TABLE IBPDDB071/R004660V >> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 > DECIMAL >> (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1) NOT >> NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH >> DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT ); > Label >> on IBPDDB071/R004660V(PERSONNR IS 'PERSONNR', LFDNR1 IS 'LFDNR1', >> VOTYP IS 'VOTYP', BSSTAMMNR IS 'BSSTAMMNR', BSVNR IS >> 'BSVNR');''' >> >> Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze >> rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu >> t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v >> tele CREATE TABLE. >> >> Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co >> potrebujem? ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python Mgr. Ing. Roman MIKLÓŠ Prvá stavebná sporiteľňa a.s. Bajkalská 30, P. O. Box 48 829 48 Bratislava 25 Tel.: +421/ 2 / 582 31 174 Fax: +421/ 2 / 582 31 109 ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s regularnym vyrazom
[EMAIL PROTECTED] wrote: > Predtym som cital ( > http://www.onlamp.com/pub/a/python/2006/01/26/pyparsing.html ) o module > pyparsing ( http://pyparsing.wikispaces.com/), ale zial nemal som cas sa > s tym zaoberat. Doteraz parsujem vsetko iba regularnymi vyrazmi. Zda sa mi > to najrychlejsie riesenie - i ked nie najlepsie a ma to tiez svoje hranice > a uskalia. > > Dik za info -o yapps-e som doteraz nepocul. > Nevidim dokumetaciu Yappsu na tej stranke. preto sa chcem spytat: > 1. aky je vstup pre Yapps? Nejako zapisana gramatika? > 2. pouzil si Yapps1 alebo Yapps2 > 3. Nemas nejaky kratky priklad ako si parsoval to SQL? > > s pozdravom > > Roman caw... kedysi som robil alter script generator pre mysql. nechcem to prikladat do prilohy, neviem ci by to preslo cez mailing list, tak som to vyvesil na http://st.fri.utc.sk/~janech/SQLAlterGenerator.tgz Pre teba je dolezity subor generator/SQLParser.g Ja som pred tym tiez parsoval vsetko cez regulare... ale hento mi dava omnoho viac moznosti > Na taketo veci sa hodia skor parser-generatory ako regularne vyrazy. Ja > pouzivam YAPPS (http://theory.stanford.edu/~amitp/yapps/). Konkretne SQL > som s nim uz parsoval. > > [EMAIL PROTECTED] wrote: >> Rad by som tymto oslovil odbornikov na regularne vyrazy. >> >> Extrahujem datove polia tabulky cez regularny vyraz takto: >> --- skript --- >> import sys,re >> >> sql_statement='''CREATE TABLE IBPDDB071/R004660V >> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 > DECIMAL >> (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1) NOT >> NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH >> DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT );''' >> regexp_sql_create=\ >> re.compile(r"^\s*CREATE\s+TABLE\s+" >>r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" >>r"\((?P.*)\)\s*") >> >> result=regexp_sql_create.search(sql_statement) >> if result == None: >> # CREATE TABLE statement not valid ! >> print "SQL CREATE TABLE statement is not valid !!!" >> sys.exit() >> else: >> # Parse data from RegExp >> library=result.group('library') >> print "Library=%s" % library >> table=result.group('file') >> print "Table=%s" %table >> table_field_def=result.group('tbl_field_def') >> print "Field Definitions=%s" % table_field_def >> konec skriptu >> >> Potom definicie dat. poli dalej pracovavam. >> Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE > >> TABLE (...); moze obsahovat aj LABEL ON (...); >> takze moze vyzerat takto: >> >> sql_statement='''CREATE TABLE IBPDDB071/R004660V >> (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 > DECIMAL >> (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1) NOT >> NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH >> DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT ); > Label >> on IBPDDB071/R004660V(PERSONNR IS 'PERSONNR', LFDNR1 IS 'LFDNR1', >> VOTYP IS 'VOTYP', BSSTAMMNR IS 'BSSTAMMNR', BSVNR IS >> 'BSVNR');''' >> >> Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze >> rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu >> t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v >> tele CREATE TABLE. >> >> Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co >> potrebujem? ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s regularnym vyrazom
[EMAIL PROTECTED] > To som skusal ale neni to tak jednoduche. > -- > [...]'''CREATE TABLE IBPDDB071/R004660V > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, > LFDNR1 DECIMAL (3, 0) [...] );''' > regexp_sql_create=\ > re.compile(r"^\s*CREATE\s+TABLE\s+" >r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" >r"\((?P.*?)\)\s*") No jasně. Když jsou vevnitř závorky, tak to nemůže fungovat. Problém je principiální. Regulární výrazy obecně nemohou popisovat řetězce jazyků, které obsahují párové struktury. Možná se dají zpracovat nějaké speciální případy na základě dalších znalostí. pepr ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s regularnym vyrazom
ok funguje to, vcera som si to nejako nevsimol. "Petr Hlávka" <[EMAIL PROTECTED]> Sent by: [EMAIL PROTECTED] 01.02.2007 17:44 Please respond to Konference PyCZ To "Konference PyCZ" cc Subject Re: [python] Problem s regularnym vyrazom Dobry den, vsak uprava s [^;] nerika, ze statement musi koncit strednikem, pouze reguralni vyraz nepreskoci pres strednik na dalsi prikaz LABEL ON... S pozdravem Petr Hlavka. On 2/1/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > No ano, ale ak tam je iba jedno CREATE TABLE(...) tak to nemusi byt > ukoncene so strednikom ; > > Ja som zatial obisiel ten regularny vyraz tak, ze este ked vsetko > nacitavam do stringu, preventivne hladam prvy strednik zlava a ak tam je, > tak vsetko od neho napravo odstranim > > idx_1st_semicolon=sql_statement.find(';') > if idx_1st_semicolon > 0: > sql_statement=sql_statement[:idx_1st_semicolon] > > No aj tak by ma zaujimal ten problem s regularnym vyrazom, pretoze som > skusal aj non greedy ale to pracuje uplne zle. > > > > > Leos Pol <[EMAIL PROTECTED]> > Sent by: [EMAIL PROTECTED] > 01.02.2007 15:15 > Please respond to > Konference PyCZ > > > To > Konference PyCZ > cc > > Subject > Re: [python] Problem s regularnym vyrazom > > > > > > > Zdravim, > > ja bych to asi nelamal pres koleno a udelal bych tohle: > > re.compile(r"^\s*CREATE\s+TABLE\s+" >r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" >r"\((?P[^;]*)\)") > > tzn: Kazde sql query je ukonceno strednikem. > > Leo > > [EMAIL PROTECTED] wrote: > > Rad by som tymto oslovil odbornikov na regularne vyrazy. > > > > Extrahujem datove polia tabulky cez regularny vyraz takto: > > --- skript --- > > import sys,re > > > > sql_statement='''CREATE TABLE IBPDDB071/R004660V > > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 > DECIMAL > > (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1) NOT > > NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH > > DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT );''' > > regexp_sql_create=\ > > re.compile(r"^\s*CREATE\s+TABLE\s+" > >r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" > >r"\((?P.*)\)\s*") > > > > result=regexp_sql_create.search(sql_statement) > > if result == None: > > # CREATE TABLE statement not valid ! > > print "SQL CREATE TABLE statement is not valid !!!" > > sys.exit() > > else: > > # Parse data from RegExp > > library=result.group('library') > > print "Library=%s" % library > > table=result.group('file') > > print "Table=%s" %table > > table_field_def=result.group('tbl_field_def') > > print "Field Definitions=%s" % table_field_def > > konec skriptu > > > > Potom definicie dat. poli dalej pracovavam. > > Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE > > > TABLE (...); moze obsahovat aj LABEL ON (...); > > takze moze vyzerat takto: > > > > sql_statement='''CREATE TABLE IBPDDB071/R004660V > > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 > DECIMAL > > (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1) NOT > > NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH > > DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT ); > Label > > on IBPDDB071/R004660V(PERSONNR IS 'PERSONNR', LFDNR1 IS 'LFDNR1', > > VOTYP IS 'VOTYP', BSSTAMMNR IS 'BSSTAMMNR', BSVNR IS > > 'BSVNR');''' > > > > Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze > > rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu > > t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v > > tele CREATE TABLE. > > > > Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co > > potrebujem? > > Mgr. Ing. Roman MIKLÓŠ > > Prvá stavebná sporiteľňa a.s. > > Bajkalská 30, P. O. Box 48 > > 829 48 Bratislava 25 > > Tel.: +421/ 2 / 582 31 174 > > Fax: +421/ 2 / 582 31 109 > > > > ___ > > Python mailing li
Re: [python] Problem s regularnym vyrazom
Predtym som cital ( http://www.onlamp.com/pub/a/python/2006/01/26/pyparsing.html ) o module pyparsing ( http://pyparsing.wikispaces.com/), ale zial nemal som cas sa s tym zaoberat. Doteraz parsujem vsetko iba regularnymi vyrazmi. Zda sa mi to najrychlejsie riesenie - i ked nie najlepsie a ma to tiez svoje hranice a uskalia. Dik za info -o yapps-e som doteraz nepocul. Nevidim dokumetaciu Yappsu na tej stranke. preto sa chcem spytat: 1. aky je vstup pre Yapps? Nejako zapisana gramatika? 2. pouzil si Yapps1 alebo Yapps2 3. Nemas nejaky kratky priklad ako si parsoval to SQL? s pozdravom Roman Jan Janech <[EMAIL PROTECTED]> Sent by: [EMAIL PROTECTED] 01.02.2007 16:51 Please respond to Konference PyCZ To Konference PyCZ cc Subject Re: [python] Problem s regularnym vyrazom Na taketo veci sa hodia skor parser-generatory ako regularne vyrazy. Ja pouzivam YAPPS (http://theory.stanford.edu/~amitp/yapps/). Konkretne SQL som s nim uz parsoval. [EMAIL PROTECTED] wrote: > Rad by som tymto oslovil odbornikov na regularne vyrazy. > > Extrahujem datove polia tabulky cez regularny vyraz takto: > --- skript --- > import sys,re > > sql_statement='''CREATE TABLE IBPDDB071/R004660V > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL > (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1) NOT > NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH > DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT );''' > regexp_sql_create=\ > re.compile(r"^\s*CREATE\s+TABLE\s+" >r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" >r"\((?P.*)\)\s*") > > result=regexp_sql_create.search(sql_statement) > if result == None: > # CREATE TABLE statement not valid ! > print "SQL CREATE TABLE statement is not valid !!!" > sys.exit() > else: > # Parse data from RegExp > library=result.group('library') > print "Library=%s" % library > table=result.group('file') > print "Table=%s" %table > table_field_def=result.group('tbl_field_def') > print "Field Definitions=%s" % table_field_def > konec skriptu > > Potom definicie dat. poli dalej pracovavam. > Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE > TABLE (...); moze obsahovat aj LABEL ON (...); > takze moze vyzerat takto: > > sql_statement='''CREATE TABLE IBPDDB071/R004660V > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL > (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1) NOT > NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH > DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT ); Label > on IBPDDB071/R004660V(PERSONNR IS 'PERSONNR', LFDNR1 IS 'LFDNR1', > VOTYP IS 'VOTYP', BSSTAMMNR IS 'BSSTAMMNR', BSVNR IS > 'BSVNR');''' > > Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze > rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu > t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v > tele CREATE TABLE. > > Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co > potrebujem? > Mgr. Ing. Roman MIKLÓŠ > Prvá stavebná sporiteľňa a.s. > Bajkalská 30, P. O. Box 48 > 829 48 Bratislava 25 > Tel.: +421/ 2 / 582 31 174 > Fax: +421/ 2 / 582 31 109 ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python Mgr. Ing. Roman MIKLÓŠ Prvá stavebná sporiteľňa a.s. Bajkalská 30, P. O. Box 48 829 48 Bratislava 25 Tel.: +421/ 2 / 582 31 174 Fax: +421/ 2 / 582 31 109 ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s regularnym vyrazom
Dobry den, vsak uprava s [^;] nerika, ze statement musi koncit strednikem, pouze reguralni vyraz nepreskoci pres strednik na dalsi prikaz LABEL ON... S pozdravem Petr Hlavka. On 2/1/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > No ano, ale ak tam je iba jedno CREATE TABLE(...) tak to nemusi byt > ukoncene so strednikom ; > > Ja som zatial obisiel ten regularny vyraz tak, ze este ked vsetko > nacitavam do stringu, preventivne hladam prvy strednik zlava a ak tam je, > tak vsetko od neho napravo odstranim > > idx_1st_semicolon=sql_statement.find(';') > if idx_1st_semicolon > 0: > sql_statement=sql_statement[:idx_1st_semicolon] > > No aj tak by ma zaujimal ten problem s regularnym vyrazom, pretoze som > skusal aj non greedy ale to pracuje uplne zle. > > > > > Leos Pol <[EMAIL PROTECTED]> > Sent by: [EMAIL PROTECTED] > 01.02.2007 15:15 > Please respond to > Konference PyCZ > > > To > Konference PyCZ > cc > > Subject > Re: [python] Problem s regularnym vyrazom > > > > > > > Zdravim, > > ja bych to asi nelamal pres koleno a udelal bych tohle: > > re.compile(r"^\s*CREATE\s+TABLE\s+" >r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" >r"\((?P[^;]*)\)") > > tzn: Kazde sql query je ukonceno strednikem. > > Leo > > [EMAIL PROTECTED] wrote: > > Rad by som tymto oslovil odbornikov na regularne vyrazy. > > > > Extrahujem datove polia tabulky cez regularny vyraz takto: > > --- skript --- > > import sys,re > > > > sql_statement='''CREATE TABLE IBPDDB071/R004660V > > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 > DECIMAL > > (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1) NOT > > NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH > > DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT );''' > > regexp_sql_create=\ > > re.compile(r"^\s*CREATE\s+TABLE\s+" > >r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" > >r"\((?P.*)\)\s*") > > > > result=regexp_sql_create.search(sql_statement) > > if result == None: > > # CREATE TABLE statement not valid ! > > print "SQL CREATE TABLE statement is not valid !!!" > > sys.exit() > > else: > > # Parse data from RegExp > > library=result.group('library') > > print "Library=%s" % library > > table=result.group('file') > > print "Table=%s" %table > > table_field_def=result.group('tbl_field_def') > > print "Field Definitions=%s" % table_field_def > > konec skriptu > > > > Potom definicie dat. poli dalej pracovavam. > > Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE > > > TABLE (...); moze obsahovat aj LABEL ON (...); > > takze moze vyzerat takto: > > > > sql_statement='''CREATE TABLE IBPDDB071/R004660V > > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 > DECIMAL > > (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1) NOT > > NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH > > DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT ); > Label > > on IBPDDB071/R004660V(PERSONNR IS 'PERSONNR', LFDNR1 IS 'LFDNR1', > > VOTYP IS 'VOTYP', BSSTAMMNR IS 'BSSTAMMNR', BSVNR IS > > 'BSVNR');''' > > > > Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze > > rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu > > t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v > > tele CREATE TABLE. > > > > Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co > > potrebujem? > > Mgr. Ing. Roman MIKLÓŠ > > Prvá stavebná sporiteľňa a.s. > > Bajkalská 30, P. O. Box 48 > > 829 48 Bratislava 25 > > Tel.: +421/ 2 / 582 31 174 > > Fax: +421/ 2 / 582 31 109 > > > > ___ > > Python mailing list > > Python@py.cz > > http://www.py.cz/mailman/listinfo/python > > > > > -- > > Leos Pol > SW Engineer > Radiante Corp. > > If it can be imagined, > we can implement it > > ___ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python > > > Mgr. Ing. Roman MIKLÓŠ > Prvá stavebná sporiteľňa a.s. > Bajkalská 30, P. O. Box 48 > 829 48 Bratislava 25 > Tel.: +421/ 2 / 582 31 174 > Fax: +421/ 2 / 582 31 109 > > ___ > 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] Problem s regularnym vyrazom
Na taketo veci sa hodia skor parser-generatory ako regularne vyrazy. Ja pouzivam YAPPS (http://theory.stanford.edu/~amitp/yapps/). Konkretne SQL som s nim uz parsoval. [EMAIL PROTECTED] wrote: > Rad by som tymto oslovil odbornikov na regularne vyrazy. > > Extrahujem datove polia tabulky cez regularny vyraz takto: > --- skript --- > import sys,re > > sql_statement='''CREATE TABLE IBPDDB071/R004660V > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL > (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1)NOT > NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH > DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT );''' > regexp_sql_create=\ > re.compile(r"^\s*CREATE\s+TABLE\s+" >r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" >r"\((?P.*)\)\s*") > > result=regexp_sql_create.search(sql_statement) > if result == None: > # CREATE TABLE statement not valid ! > print "SQL CREATE TABLE statement is not valid !!!" > sys.exit() > else: > # Parse data from RegExp > library=result.group('library') > print "Library=%s" % library > table=result.group('file') > print "Table=%s" %table > table_field_def=result.group('tbl_field_def') > print "Field Definitions=%s" % table_field_def > konec skriptu > > Potom definicie dat. poli dalej pracovavam. > Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE > TABLE (...); moze obsahovat aj LABEL ON (...); > takze moze vyzerat takto: > > sql_statement='''CREATE TABLE IBPDDB071/R004660V > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL > (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1)NOT > NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH > DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT ); Label > on IBPDDB071/R004660V(PERSONNR IS 'PERSONNR', LFDNR1 IS 'LFDNR1', > VOTYP IS 'VOTYP', BSSTAMMNR IS 'BSSTAMMNR', BSVNR IS > 'BSVNR');''' > > Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze > rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu > t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v > tele CREATE TABLE. > > Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co > potrebujem? > Mgr. Ing. Roman MIKLÓŠ > Prvá stavebná sporiteľňa a.s. > Bajkalská 30, P. O. Box 48 > 829 48 Bratislava 25 > Tel.: +421/ 2 / 582 31 174 > Fax: +421/ 2 / 582 31 109 ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s regularnym vyrazom
To som skusal ale neni to tak jednoduche. Toto -- import sys,re sql_statement='''CREATE TABLE IBPDDB071/R004660V (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1)NOT NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT ); Label on IBPDDB071/R004660V(PERSONNR IS 'PERSONNR', LFDNR1 IS 'LFDNR1', VOTYP IS 'VOTYP', BSSTAMMNR IS 'BSSTAMMNR', BSVNR IS 'BSVNR');''' regexp_sql_create=\ re.compile(r"^\s*CREATE\s+TABLE\s+" r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" r"\((?P.*?)\)\s*") result=regexp_sql_create.search(sql_statement) if result == None: # CREATE TABLE statement not valid ! print "SQL CREATE TABLE statement is not valid !!!" sys.exit() else: # Parse data from RegExp library=result.group('library') print "Library=%s" % library table=result.group('file') print "Table=%s" %table table_field_def=result.group('tbl_field_def') print "Field Definitions=%s" % table_field_def -- da vysledok Field Definitions=PERSONNRDECIMAL (10, 0 co je zle - vsetko ostatne to urezalo -pretoze zatvorky ')' su aj v definiciach poli "Petr Prikryl" <[EMAIL PROTECTED]> Sent by: [EMAIL PROTECTED] 01.02.2007 15:22 Please respond to Konference PyCZ To "Konference PyCZ" cc Subject Re: [python] Problem s regularnym vyrazom Roman MIKLÓŠ > Extrahujem datove polia tabulky cez regularny vyraz takto: > [...] > regexp_sql_create=\ > re.compile(r"^\s*CREATE\s+TABLE\s+" >r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" >r"\((?P.*)\)\s*") > [...] > Toto by fungovalo, az na to ze SQL-skript je vygenerovany a > okrem CREATE TABLE (...); moze obsahovat aj LABEL ON (...); > [...] > Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) > vsetko, takze rozpozna vsetko od 'CREATE TABLE(' az po > poslednu zatvorku ')' stringu t.j. '..); LABEL ON(..' > ale ja potrebujem aby rozpoznal len to co je v > tele CREATE TABLE. > > Vie mi niekto poradit ako napisat ten regularny vyraz > aby robil co potrebujem? Stačí upravit ten regulární výraz tak, aby nebyl greedy, tj. aby zastavil před první zavírací závorkou. K tomu stačí modifikovat sekvenci '.*' na posledním řádku na '.*?'. Otazník za opakovcím symbolem zajistí nežravou interpretaci. pepr ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python Mgr. Ing. Roman MIKLÓŠ Prvá stavebná sporiteľňa a.s. Bajkalská 30, P. O. Box 48 829 48 Bratislava 25 Tel.: +421/ 2 / 582 31 174 Fax: +421/ 2 / 582 31 109 ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s regularnym vyrazom
No ano, ale ak tam je iba jedno CREATE TABLE(...) tak to nemusi byt ukoncene so strednikom ; Ja som zatial obisiel ten regularny vyraz tak, ze este ked vsetko nacitavam do stringu, preventivne hladam prvy strednik zlava a ak tam je, tak vsetko od neho napravo odstranim idx_1st_semicolon=sql_statement.find(';') if idx_1st_semicolon > 0: sql_statement=sql_statement[:idx_1st_semicolon] No aj tak by ma zaujimal ten problem s regularnym vyrazom, pretoze som skusal aj non greedy ale to pracuje uplne zle. Leos Pol <[EMAIL PROTECTED]> Sent by: [EMAIL PROTECTED] 01.02.2007 15:15 Please respond to Konference PyCZ To Konference PyCZ cc Subject Re: [python] Problem s regularnym vyrazom Zdravim, ja bych to asi nelamal pres koleno a udelal bych tohle: re.compile(r"^\s*CREATE\s+TABLE\s+" r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" r"\((?P[^;]*)\)") tzn: Kazde sql query je ukonceno strednikem. Leo [EMAIL PROTECTED] wrote: > Rad by som tymto oslovil odbornikov na regularne vyrazy. > > Extrahujem datove polia tabulky cez regularny vyraz takto: > --- skript --- > import sys,re > > sql_statement='''CREATE TABLE IBPDDB071/R004660V > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL > (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1) NOT > NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH > DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT );''' > regexp_sql_create=\ > re.compile(r"^\s*CREATE\s+TABLE\s+" >r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" >r"\((?P.*)\)\s*") > > result=regexp_sql_create.search(sql_statement) > if result == None: > # CREATE TABLE statement not valid ! > print "SQL CREATE TABLE statement is not valid !!!" > sys.exit() > else: > # Parse data from RegExp > library=result.group('library') > print "Library=%s" % library > table=result.group('file') > print "Table=%s" %table > table_field_def=result.group('tbl_field_def') > print "Field Definitions=%s" % table_field_def > konec skriptu > > Potom definicie dat. poli dalej pracovavam. > Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE > TABLE (...); moze obsahovat aj LABEL ON (...); > takze moze vyzerat takto: > > sql_statement='''CREATE TABLE IBPDDB071/R004660V > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL > (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1) NOT > NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH > DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT ); Label > on IBPDDB071/R004660V(PERSONNR IS 'PERSONNR', LFDNR1 IS 'LFDNR1', > VOTYP IS 'VOTYP', BSSTAMMNR IS 'BSSTAMMNR', BSVNR IS > 'BSVNR');''' > > Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze > rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu > t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v > tele CREATE TABLE. > > Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co > potrebujem? > Mgr. Ing. Roman MIKLÓŠ > Prvá stavebná sporiteľňa a.s. > Bajkalská 30, P. O. Box 48 > 829 48 Bratislava 25 > Tel.: +421/ 2 / 582 31 174 > Fax: +421/ 2 / 582 31 109 > > ___ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python > -- Leos Pol SW Engineer Radiante Corp. If it can be imagined, we can implement it ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python Mgr. Ing. Roman MIKLÓŠ Prvá stavebná sporiteľňa a.s. Bajkalská 30, P. O. Box 48 829 48 Bratislava 25 Tel.: +421/ 2 / 582 31 174 Fax: +421/ 2 / 582 31 109 ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s regularnym vyrazom
Roman MIKLÓŠ > Extrahujem datove polia tabulky cez regularny vyraz takto: > [...] > regexp_sql_create=\ > re.compile(r"^\s*CREATE\s+TABLE\s+" >r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" >r"\((?P.*)\)\s*") > [...] > Toto by fungovalo, az na to ze SQL-skript je vygenerovany a > okrem CREATE TABLE (...); moze obsahovat aj LABEL ON (...); > [...] > Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) > vsetko, takze rozpozna vsetko od 'CREATE TABLE(' az po > poslednu zatvorku ')' stringu t.j. '..); LABEL ON(..' > ale ja potrebujem aby rozpoznal len to co je v > tele CREATE TABLE. > > Vie mi niekto poradit ako napisat ten regularny vyraz > aby robil co potrebujem? Stačí upravit ten regulární výraz tak, aby nebyl greedy, tj. aby zastavil před první zavírací závorkou. K tomu stačí modifikovat sekvenci '.*' na posledním řádku na '.*?'. Otazník za opakovcím symbolem zajistí nežravou interpretaci. pepr ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s regularnym vyrazom
Zdravim, ja bych to asi nelamal pres koleno a udelal bych tohle: re.compile(r"^\s*CREATE\s+TABLE\s+" r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" r"\((?P[^;]*)\)") tzn: Kazde sql query je ukonceno strednikem. Leo [EMAIL PROTECTED] wrote: > Rad by som tymto oslovil odbornikov na regularne vyrazy. > > Extrahujem datove polia tabulky cez regularny vyraz takto: > --- skript --- > import sys,re > > sql_statement='''CREATE TABLE IBPDDB071/R004660V > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL > (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1)NOT > NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH > DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT );''' > regexp_sql_create=\ > re.compile(r"^\s*CREATE\s+TABLE\s+" >r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" >r"\((?P.*)\)\s*") > > result=regexp_sql_create.search(sql_statement) > if result == None: > # CREATE TABLE statement not valid ! > print "SQL CREATE TABLE statement is not valid !!!" > sys.exit() > else: > # Parse data from RegExp > library=result.group('library') > print "Library=%s" % library > table=result.group('file') > print "Table=%s" %table > table_field_def=result.group('tbl_field_def') > print "Field Definitions=%s" % table_field_def > konec skriptu > > Potom definicie dat. poli dalej pracovavam. > Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE > TABLE (...); moze obsahovat aj LABEL ON (...); > takze moze vyzerat takto: > > sql_statement='''CREATE TABLE IBPDDB071/R004660V > (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL > (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1)NOT > NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH > DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT ); Label > on IBPDDB071/R004660V(PERSONNR IS 'PERSONNR', LFDNR1 IS 'LFDNR1', > VOTYP IS 'VOTYP', BSSTAMMNR IS 'BSSTAMMNR', BSVNR IS > 'BSVNR');''' > > Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze > rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu > t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v > tele CREATE TABLE. > > Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co > potrebujem? > Mgr. Ing. Roman MIKLÓŠ > Prvá stavebná sporiteľňa a.s. > Bajkalská 30, P. O. Box 48 > 829 48 Bratislava 25 > Tel.: +421/ 2 / 582 31 174 > Fax: +421/ 2 / 582 31 109 > > ___ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python > -- Leos Pol SW Engineer Radiante Corp. If it can be imagined, we can implement it ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] Problem s regularnym vyrazom
Rad by som tymto oslovil odbornikov na regularne vyrazy. Extrahujem datove polia tabulky cez regularny vyraz takto: --- skript --- import sys,re sql_statement='''CREATE TABLE IBPDDB071/R004660V (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1)NOT NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT );''' regexp_sql_create=\ re.compile(r"^\s*CREATE\s+TABLE\s+" r"(?P[A-Z0-9]+)\s*[/.]\s*(?P[A-Z0-9]+)\s*" r"\((?P.*)\)\s*") result=regexp_sql_create.search(sql_statement) if result == None: # CREATE TABLE statement not valid ! print "SQL CREATE TABLE statement is not valid !!!" sys.exit() else: # Parse data from RegExp library=result.group('library') print "Library=%s" % library table=result.group('file') print "Table=%s" %table table_field_def=result.group('tbl_field_def') print "Field Definitions=%s" % table_field_def konec skriptu Potom definicie dat. poli dalej pracovavam. Toto by fungovalo, az na to ze SQL-skript je vygenerovany a okrem CREATE TABLE (...); moze obsahovat aj LABEL ON (...); takze moze vyzerat takto: sql_statement='''CREATE TABLE IBPDDB071/R004660V (PERSONNRDECIMAL (10, 0)NOT NULL WITH DEFAULT, LFDNR1 DECIMAL (3, 0) NOT NULL WITH DEFAULT, VOTYP CHARACTER (1)NOT NULL WITH DEFAULT, BSSTAMMNR DECIMAL (7, 0) NOT NULL WITH DEFAULT,BSVNR DECIMAL (2, 0) NOT NULL WITH DEFAULT ); Label on IBPDDB071/R004660V(PERSONNR IS 'PERSONNR', LFDNR1 IS 'LFDNR1', VOTYP IS 'VOTYP', BSSTAMMNR IS 'BSSTAMMNR', BSVNR IS 'BSVNR');''' Vtedy mi horeuvedeny regexp matchuje (pretoze je greedy) vsetko, takze rozpozna vsetko od 'CREATE TABLE(' az po poslednu zatvorku ')' stringu t.j. '..); LABEL ON(..' ale ja potrebujem aby rozpoznal len to co je v tele CREATE TABLE. Vie mi niekto poradit ako napisat ten regularny vyraz aby robil co potrebujem? Mgr. Ing. Roman MIKLÓŠ Prvá stavebná sporiteľňa a.s. Bajkalská 30, P. O. Box 48 829 48 Bratislava 25 Tel.: +421/ 2 / 582 31 174 Fax: +421/ 2 / 582 31 109 ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s kodovanim PyDev - pokracovani
Ondrej Beranek OB> # -*- coding: cp1250 -*- OB> jmeno = raw_input(u #39;Zadejte jméno (nic => konec): #39;) OB> print jmeno OB> Me v eclipse serve: OB> Traceback (most recent call last): OB> File "C:\Documents and OB> Settings\Administrator\workspace\prvni\src\temp.py", line 2, in OB> Tipnul bych, že problém není na straně eclipse. V raw_input() s unicode textem je chyba (už dlouho). Kopíruji jednu z dávných zpráv... pepr > [ 1099364 ] raw_input() displays wrong unicode prompt > https://sourceforge.net/tracker/index.php?func=detail&aid=1099364&group_id=5470&atid=105470 > > ale ted jsem ho tam hledal a vůbec tam není. Taky nechápu, > proč tam nejde vyhledávat podle ID. Je to tam, ale je mezi uzavřenými (kliknutím na link se tam dá dostat). Mezi tím došlo k určitému posunu, ale nejsem s tím tak docela spokojený. Částečné řešení lze nalézt u poslední poznámky by birkenfeld, tj. explicitně raw_input(s.encode(sys.stdout.encoding)) Dá se to vyřešit centralizovaně například definicí vlastní funkce: def my_input(s): import sys return raw_input(s.encode(sys.stdout.encoding)) Ale moc se mi to nelíbí, protože takhle by měla fungovat raw_input() už "od narození". Aby to celé nezapadlo, přidal jsem výzvu ke komentářům níže zmíněného patch https://sourceforge.net/tracker/index.php?func=detail&aid=1214889&group_id=5470&atid=305470 pepr Date: 2005-06-26 13:34 Sender: birkenfeld Logged In: YES user_id=1188172 Actually, your sys.stdout.encoding is set to something different than cp1250, which is why the result of DOS type looks the same as the one of print. This is because print observes sys.stdout.encoding, while sys.stdout.write uses the system default encoding, which is, as you set it, cp1250 and is displayed wrong on the console. Closing this bug, as it is currently expected behaviour (but will perhaps change when patch #1214889 is accepted). Date: 2005-06-27 22:56 Sender: prikryl Logged In: YES user_id=771873 Should I understand it that there is no bug, but I do use it incorrectly? I cannot agree that this is expected behaviour. (I am not the only one who found this strange.) Of course, the sys.stdout.encoding is different for a DOS window (cp852) than the default encoding (cp1250). Windows simply behaves this way when working with DOS window (because of legacy DOS applications). I do not complain on behaviour of sys.stdout.write() but on behaviour of raw_input(). The output of raw_input() prompt should be displayed the same way as the print diplays the results to the user. The raw_input() is used for building user interface. Its prompt should not be displayed differently in windows that use different encoding (i.e. DOS console vs. say IDLE console). In other words, how should I use raw_input() to make it working correctly? Date: 2005-06-27 23:40 Sender: birkenfeld Logged In: YES user_id=1188172 You'll have to explicitly encode the unicode string using raw_input(s.encode(sys.stdout.encoding)). As said, this behaviour will change if the patch mentioned is accepted. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s kodovanim PyDev - pokracovani
Ondrej Beranek napsal(a): > > No jenze asi s tim neco spolecneho mit bude protoze podle mne zapis > jmeno = raw_input(u'Zadejte jméno (nic => konec):') > znamena jen tolik ze se string 'Zadejte jméno (nic => konec):' prevede > ve vysledku na unicode. > takze ta chyba je neco jineho. > Neprosel ani zapis > > jmeno = raw_input(unicode('Zadejte jméno (nic => konec): ','cp1250')) > > ktery by asi projit mel. V idle skutecne projde, a vse bezi korektne. > v PyDev ne. > tohle uz asi s pouzitym kodovanim eclipse nijak nesouvisi. Takže ten předchozí dotaz je snad už jasný: Musí existovat shoda mezi deklarovaným (# -*- coding: cp1250 -*- )a použitým (v jakém je soubor skutečně uložen a načten v editoru) kodovaním. Tento dotaz je trochu o něčem jiném. Chyba je pradvěpodobně v implementaci příkazu raw_input(), protože ani mne to takto v Příkazovém řádku nefunguje. Finta je jednoduchá: print u'Zadejte jméno (nic => konec):', jmeno=raw_input() Myslím, že řetězce u'Zadejte jméno (nic => konec):' a unicode('Zadejte jméno (nic => konec): ','cp1250') jsou ekvivalentní, pokud máš v deklaraci # -*- coding: cp1250 -*- a v kodovaní cp1250 je soubor také uložen. Dotaz: existuje editor který dokáže nastavit použité kodovaní podle deklarovaného? -- geon Pavel Kosina ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] Problem s kodovanim PyDev - pokracovani
OB> # -*- coding: cp1250 -*- OB> jmeno = raw_input(u #39;Zadejte jméno (nic => konec): #39;) OB> print jmeno OB> Me v eclipse serve: OB> Traceback (most recent call last): OB> File "C:\Documents and OB> Settings\Administrator\workspace\prvni\src\temp.py", line 2, in OB> OB> jmeno = raw_input(u #39;Zadejte jméno (nic => konec): #39;) OB> UnicodeEncodeError: #39;ascii #39; codec can #39;t encode OB> character u #39;\xe9 #39; in position 10: ordinal not in range(128) OB> Zkusim jeste EasyEclipse zda to bude delat take. OB> Ja nutne netrvam na eclipse, ale potrebuju neco co pujde OB> pouzivat jak na jednom monitoru 1024x768 tak na dvou, neco co OB> obsahuje Debugger, aspon zakladni spravu projektu a funguje jak v OB> linuxu tak ve windows. Eclipse se mi libi hlavne proto ze v ni jde OB> kodovat kdeco (C a PHP) s pomoci pluginu. --- mtip>Tak s timhle Eclipse nema nic spolecneho, ale je to chyba parseru. mtip>Jestlize zvolim string typu unicode, tak do nej podle me nelze zapsat mtip>é. ja bych v tomto pripade pouzil. mtip># -*- coding: cp1250 -*- mtip>jmeno = raw_input('Zadejte jméno (nic => konec): ') mtip>print jmeno --- No jenze asi s tim neco spolecneho mit bude protoze podle mne zapis jmeno = raw_input(u'Zadejte jméno (nic => konec):') znamena jen tolik ze se string 'Zadejte jméno (nic => konec):' prevede ve vysledku na unicode. takze ta chyba je neco jineho. Neprosel ani zapis jmeno = raw_input(unicode('Zadejte jméno (nic => konec): ','cp1250')) ktery by asi projit mel. V idle skutecne projde, a vse bezi korektne. v PyDev ne. tohle uz asi s pouzitym kodovanim eclipse nijak nesouvisi. ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s metodami
Ve vasem prikladu se naalokuje pamet pro instancemethod a vzapeti se uvolni, protoze na objekt neni zadna reference. Vysledkem vyrazu `id(c.m)' je integer s tim, ze v prubehu vypoctu se docasne vytvoril objekt typu instancemethod, ale jeste pred dokoncenim vyhodnoceni vyrazu se objekt dealokoval. Tato pamet se znovu pouzije pro novou instanci v dalsim vyrazu `id(c.m)'. Pokud ovsem jednu instanci ulozime, nove volani alokuje jiny usek pameti a dostaneme jine id. Já tomu rozumím, jen píšu, že je potřeba si na to dát pozor. Protože se občas uvádí, že "a is b" je to samé jako "id(a) == id(b)", a tento příklad ukazuje, že tomu tak nemusí být. Lze si to snadno ověřit takto: >>> a=c.m >>> b=c.m >>> id(a), id(b), id(c.m), id(c.m) (-1208131876, -1208247924, -1208570148, -1208570148) ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s metodami
On Fri, Feb 17, 2006 at 02:03:41PM +0100, Petr Mach wrote: > >>>> type(cls.__dict__['method']) > > > >>>> type(cls.method) > > > > > >Vyraz cls.method vrati objekt typu instancemethod, v kterem je > >zapouzdrena prislusna funkce. Jelikoz se zapouzdreni nikde nekesuje, > >je pri kazdem vyskytu vyrazu `cls.method' vytvoren novy objekt typu > >instancemethod. Proto pro porovnani pres operator `is' dostavame False. > > Je ale poněkud zvláštní a je potřeba si dát pozor na to, že ten "novy > objekt typu instancemethod" má pořád stejné id: > > >>> id(c.m) > -1208131876 > >>> id(c.m) > -1208131876 > >>> id(c.m) > -1208131876 > > >>> id(c.m) == id(c.m), c.m is c.m > (True, False) >>> a = cls.method >>> id(a) -121020 >>> id(cls.method) -1210390332 Ve vasem prikladu se naalokuje pamet pro instancemethod a vzapeti se uvolni, protoze na objekt neni zadna reference. Vysledkem vyrazu `id(c.m)' je integer s tim, ze v prubehu vypoctu se docasne vytvoril objekt typu instancemethod, ale jeste pred dokoncenim vyhodnoceni vyrazu se objekt dealokoval. Tato pamet se znovu pouzije pro novou instanci v dalsim vyrazu `id(c.m)'. Pokud ovsem jednu instanci ulozime, nove volani alokuje jiny usek pameti a dostaneme jine id. Takhle to mometalne funguje v CPython, v Jythonu to muze byt jinak. Radek Kaňovský ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s metodami
>>> type(cls.__dict__['method']) >>> type(cls.method) Vyraz cls.method vrati objekt typu instancemethod, v kterem je zapouzdrena prislusna funkce. Jelikoz se zapouzdreni nikde nekesuje, je pri kazdem vyskytu vyrazu `cls.method' vytvoren novy objekt typu instancemethod. Proto pro porovnani pres operator `is' dostavame False. Je ale poněkud zvláštní a je potřeba si dát pozor na to, že ten "novy objekt typu instancemethod" má pořád stejné id: >>> id(c.m) -1208131876 >>> id(c.m) -1208131876 >>> id(c.m) -1208131876 >>> id(c.m) == id(c.m), c.m is c.m (True, False) ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Problem s metodami
On Fri, Feb 17, 2006 at 11:13:02AM +0100, Petr Prikryl wrote: > Jan Svec napsal... > > muze mi nekdo potvrdit nasledujici chovani na nejnovejsi verzi Python > > (testovano na 2.3.5 a 2.4.1): > > > > >>> class cls(object): > > ... def method(): pass > > ... > > >>> obj = cls() > > >>> obj.method is obj.method # !!! > > False > > >>> obj.method == obj.method > > True > > > > Pravdepodobne nejde o chybu, nebot ne vzdy plati treba (ilustrativne): > > Logicky vzato, s tím "obj.method is obj.method" je to podobné. > Metoda samotná neudržuje žádný vnitřní stav a jakákoliv kopie > kódu bude fungovat stejně. Možná je to chování operátoru is > implementováno uměle, aby programátoři nikdy nespoléhali na to, > že kód metody objektu vždy leží na stejném místě. Dovedu si > třeba představit, že objekt vznikl v distribuovaném nebo > paralelním prostředí a třída se rozkopírovala mezi více > procesorů. Vzhledem k tomu, že Python vznikal v souvislosti > s vývojem jednoho paralelního systému, mohlo se to tady odrazit. >>> type(cls.__dict__['method']) >>> type(cls.method) Vyraz cls.method vrati objekt typu instancemethod, v kterem je zapouzdrena prislusna funkce. Jelikoz se zapouzdreni nikde nekesuje, je pri kazdem vyskytu vyrazu `cls.method' vytvoren novy objekt typu instancemethod. Proto pro porovnani pres operator `is' dostavame False. Radek Kaňovský ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
RE: [python] Problem s metodami
Jan Svec napsal... > muze mi nekdo potvrdit nasledujici chovani na nejnovejsi verzi Python > (testovano na 2.3.5 a 2.4.1): > > >>> class cls(object): > ... def method(): pass > ... > >>> obj = cls() > >>> obj.method is obj.method # !!! > False > >>> obj.method == obj.method > True > > Pravdepodobne nejde o chybu, nebot ne vzdy plati treba (ilustrativne): > > >>> 'jedna' is 'jedna' > > Dane chovani me ale docela prekvapilo. Pravdepodobne k tomu dojde > pri ziskavani objektu metody na zaklade definice funkcniho objektu > uvnitr tridy. Potvrzuji pro... Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. To 'jedna' is 'jedna' vrací pro uvedenou verzi Pythonu True, ale určitě je to věc, na kterou se obecně nedá spolehnout. Při jednodušší implementaci by se řetězec se stejným obsahem mohl vytvořit dvakrát. Logicky vzato, s tím "obj.method is obj.method" je to podobné. Metoda samotná neudržuje žádný vnitřní stav a jakákoliv kopie kódu bude fungovat stejně. Možná je to chování operátoru is implementováno uměle, aby programátoři nikdy nespoléhali na to, že kód metody objektu vždy leží na stejném místě. Dovedu si třeba představit, že objekt vznikl v distribuovaném nebo paralelním prostředí a třída se rozkopírovala mezi více procesorů. Vzhledem k tomu, že Python vznikal v souvislosti s vývojem jednoho paralelního systému, mohlo se to tady odrazit. Jiná situace nastává, když třída definuje svou proměnnou, která udržuje stav. Pak by mělo být zajištěno, že "obj.v is obj.v". Vyzkoušel jsem to, a potvrdilo se to (viz dále). Je to jen takový black-box náhled. >>> class cls(object): ... def method(): pass ... v = 0 ... >>> obj = cls() >>> obj.method == obj.method True >>> obj.method is obj.method False >>> obj.v == obj.v True >>> obj.v is obj.v True pepr ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] Problem s metodami
Ahoj, muze mi nekdo potvrdit nasledujici chovani na nejnovejsi verzi Python (testovano na 2.3.5 a 2.4.1): >>> class cls(object): ... def method(): pass ... >>> obj = cls() >>> obj.method is obj.method # !!! False >>> obj.method == obj.method True Pravdepodobne nejde o chybu, nebot ne vzdy plati treba (ilustrativne): >>> 'jedna' is 'jedna' Dane chovani me ale docela prekvapilo. Pravdepodobne k tomu dojde pri ziskavani objektu metody na zaklade definice funkcniho objektu uvnitr tridy. Honza -- S pozdravem Jan Svec <[EMAIL PROTECTED]> http://py.cz ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python