Ich bin gerade dabei ein Perl Programm nach Python umzuschreiben. Das soll sowohl Python 2 als auch 3 kompatibel sein. Momentan scheitere ich an einer kompatiblen try ... except Syntax. Das funktioniert mit Python 2 : try: sock = socket.create_connection((server,port)) except socket.error as (errn,errm): print("cannot connect to %s:%d - %s" % (server,port,errm)) sys.exit(0) Allerdings nicht mit Python 3 : framstag@diaspora:~/fex/python: python3 fexit.py -v File "fexit.py", line 126 except socket.error as (errn,errm): ^ SyntaxError: invalid syntax -- Ullrich Horlacher Server und Virtualisierung Rechenzentrum IZUS/TIK E-Mail: horlacher@tik.uni-stuttgart.de Universitaet Stuttgart Tel: ++49-711-68565868 Allmandring 30a Fax: ++49-711-682357 70550 Stuttgart (Germany) WWW: http://www.tik.uni-stuttgart.de/
Ulli Horlacher wrote at Thu, 17 Sep 2015 16:28:29 +0000 (UTC):
Momentan scheitere ich an einer kompatiblen try ... except Syntax. ... (snip) framstag@diaspora:~/fex/python: python3 fexit.py -v File "fexit.py", line 126 except socket.error as (errn,errm): ^ SyntaxError: invalid syntax
Nur keine überflüssigen Klammern: $ python Python 2.7.10 (default, May 29 2015, 10:02:30) [GCC 4.8.4] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> try : ... 1/0 ... except Exception as exc: ... print("Geht doch") ... Geht doch -- Christian Tanzer http://www.c-tanzer.at/
* Ulli Horlacher:
Das funktioniert mit Python 2 :
try: sock = socket.create_connection((server,port)) except socket.error as (errn,errm): print("cannot connect to %s:%d - %s" % (server,port,errm)) sys.exit(0)
Allerdings nicht mit Python 3 :
framstag@diaspora:~/fex/python: python3 fexit.py -v File "fexit.py", line 126 except socket.error as (errn,errm): ^ SyntaxError: invalid syntax
try: sock = socket.create_connection((server,port)) except socket.error as e: print("cannot connect to %s:%d - %s" % (server,port,e.strerror)) sys.exit(0) e.strerror gibt es vermutlich nicht in allen Versionen von Python 2.
Am 17.09.2015 um 19:18 schrieb Florian Weimer <fw@deneb.enyo.de>:
* Ulli Horlacher:
Das funktioniert mit Python 2 :
try: sock = socket.create_connection((server,port)) except socket.error as (errn,errm): print("cannot connect to %s:%d - %s" % (server,port,errm)) sys.exit(0)
Allerdings nicht mit Python 3 :
framstag@diaspora:~/fex/python: python3 fexit.py -v File "fexit.py", line 126 except socket.error as (errn,errm): ^ SyntaxError: invalid syntax
try: sock = socket.create_connection((server,port)) except socket.error as e: print("cannot connect to %s:%d - %s" % (server,port,e.strerror)) sys.exit(0)
e.strerror gibt es vermutlich nicht in allen Versionen von Python 2.
Das sollte keinen SyntaxError raisen. -aj
_______________________________________________ python-de maillist - python-de@python.org https://mail.python.org/mailman/listinfo/python-de
Florian Weimer <fw@deneb.enyo.de> wrote:
try: sock = socket.create_connection((server,port)) except socket.error as e: print("cannot connect to %s:%d - %s" % (server,port,e.strerror)) sys.exit(0)
e.strerror gibt es vermutlich nicht in allen Versionen von Python 2.
Mit Python 2.7.3 und 3.4.0 funktionierts, prima. Weitere Fragen werden sicherlich noch kommen von mir :-) -- Ullrich Horlacher Server und Virtualisierung Rechenzentrum IZUS/TIK E-Mail: horlacher@tik.uni-stuttgart.de Universitaet Stuttgart Tel: ++49-711-68565868 Allmandring 30a Fax: ++49-711-682357 70550 Stuttgart (Germany) WWW: http://www.tik.uni-stuttgart.de/
Andreas Jung wrote:
On 17 Sep 2015, at 18:28, Ulli Horlacher wrote:
except socket.error as (errn,errm):
Was soll der Code überhaupt hier machen? Eine Exception fangen und als Tuple speichern? Macht für mich nicht viel Sinn.
Automatisch entpacken, als Abkürzung für except socket.error as err: errn, errm = err del err Dafür muss die Exception natürlich "iterable" sein wie in Python 2: $ python -c 'print(list(Exception()))' []
Wie kaputt....das ist nicht mal mehr ansatzweise pythonic Sent from a mobile device
Am 18.09.2015 um 13:34 schrieb Peter Otten <__peter__@web.de>:
Andreas Jung wrote:
On 17 Sep 2015, at 18:28, Ulli Horlacher wrote:
except socket.error as (errn,errm):
Was soll der Code überhaupt hier machen? Eine Exception fangen und als Tuple speichern? Macht für mich nicht viel Sinn.
Automatisch entpacken, als Abkürzung für
except socket.error as err: errn, errm = err del err
Dafür muss die Exception natürlich "iterable" sein wie in Python 2:
$ python -c 'print(list(Exception()))' []
_______________________________________________ python-de maillist - python-de@python.org https://mail.python.org/mailman/listinfo/python-de
participants (5)
-
Andreas Jung
-
Christian Tanzer
-
Florian Weimer
-
Peter Otten
-
Ulli Horlacher