
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

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 :-)

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