Non c'est un vrai problème (qui est en discussion sur python-devel et qui selon moi est fondamental).
$ ./python `printf '\xff'`
Could not convert argument 1 to string
tonfa@pirzuine:/tmp/Python-3.0$ PATH=`printf '\xff'`:$PATH ./python
Python 3.0 (r30:67503, Dec 6 2008, 11:42:46)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['PATH']
Traceback (most recent call last):
File "", line 1, in
File "/tmp/Python-3.0/Lib/os.py", line 389, in __getitem__
return self.data[self.keymap(key)]
KeyError: 'PATH'
On ne peut pas passer des arguments, et les variables d'environnement qui ne peuvent pas être décodées sont virées.
Dans le cas au dessus, l'unicode est mal encodé mais les mêmes problèmes arrivent si tu lance ton programme avec LANG=C. Dans ce cas les arguments unicodes ne peuvent être lus, et si une variable d'environnement contient de l'unicode elle est supprimée.
[^] # Re: Tout les bugs ? vraiment ?
Posté par ribwund . En réponse à la dépêche Sortie de Python 3.0 version finale. Évalué à 4.
$ ./python `printf '\xff'`
Could not convert argument 1 to string
tonfa@pirzuine:/tmp/Python-3.0$ PATH=`printf '\xff'`:$PATH ./python
Python 3.0 (r30:67503, Dec 6 2008, 11:42:46)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['PATH']
Traceback (most recent call last):
File "", line 1, in
File "/tmp/Python-3.0/Lib/os.py", line 389, in __getitem__
return self.data[self.keymap(key)]
KeyError: 'PATH'
On ne peut pas passer des arguments, et les variables d'environnement qui ne peuvent pas être décodées sont virées.
Dans le cas au dessus, l'unicode est mal encodé mais les mêmes problèmes arrivent si tu lance ton programme avec LANG=C. Dans ce cas les arguments unicodes ne peuvent être lus, et si une variable d'environnement contient de l'unicode elle est supprimée.