Problème avec sys.argv[1]
phil5718 -
Bonjour,
Windows 11 et Python 3.14.3
Le programme suivant ne fonctionne pas:
# -*- coding:Utf-8 -*-
import sys
if(len(sys.argv) > 1):
s = sys.argv[1]
print(s)
else:
print('Aucun argument !')
alors qu'il fonctionne sur Windows 10 et Python 3.7.2
Il affiche "aucun argument", alors que je l'exécute en lui passant une string
si quelqu'un a une idée ...
7 réponses
Bonjour,
lu dans : https://docs.python.org/fr/3/library/sys.html
sys.argv
La liste des arguments de la ligne de commande passés à un script Python. argv[0] est le nom du script (chemin complet, ou non, en fonction du système d'exploitation). Si la commande a été exécutée avec l'option -c de l'interpréteur, argv[0] vaut la chaîne '-c'. Si aucun nom de script n'a été donné à l'interpréteur Python, argv[0] sera une chaîne vide.
La prise en compte des arguments a peut-être changé de la version 3.14.3 à la 3.7.x
lorsque j'exécute la commande:
test.py toto
on ne récupère pas toto
mais en exécutant:
python test.py toto
cela fonctionne
Mais ce qui m'intéresse aussi c'est de glisser-déposer un fichier sur le fichier
test.py, et ca ne marche pas !
Salut,
ne manquerait-il pas un shebang au début de ton programme, ce qui expliquerait qu'il fonctionne avec python test.py toto et pas sans ?
Ton interpréteur python pointe sur quelle version ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour,
La piste de @blux StatutModérateur (voir message #3) est intéressante car rien ne garanti que ton script soit exécuté par python (c'est d'ailleurs peu probable, ce serait plutôt le langage de ton shell). Ce qui est étonnant, c'est que si ce n'était pas un interpréteur python, tu aurais sans doute dû avoir une erreur au moment d'exécuter "import sys".
Afin de préciser quel interpréteur utiliser, on insère généralement à la première ligne (appelée shebang) du fichier une ligne qui permet de résoudre le chemin de l'interpréteur à utiliser :
- Linux / Mac OS
#!/usr/bin/env python3 # -*- coding: utf-8 -*-
Si le problème persiste malgré le shebang, il serait intéressant de voir ce que contient sys.argv (selon la manière que tu exécutes ton script avec ou sans expliciter l'interpréteur python) :
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import sys print(sys.argv)
Enfin, selon ce que tu veux faire, je t'invite à t'intéresser assez rapidement au module python argparse qui est fait pour récupérer les paramètres de la ligne de commande. optparse pourrait aussi être une option mais n'est pas recommandé.
Bonne chance