Problème avec sys.argv[1]

Phil5718 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
 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

georges97 Messages postés 14441 Date d'inscription   Statut Contributeur Dernière intervention   2 808
 

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

0
phil_5718
 

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 !

0
blux Messages postés 4952 Date d'inscription   Statut Modérateur Dernière intervention   3 368
 

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 ?


0
phil_5718
 

je suis sur python 3.14.3

comment ça un shebang au début du programme ?

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PierrotLeFou
 

Faudrait voir sur W11 le programme par défaut associé à l'extension py

0
mamiemando Messages postés 33879 Date d'inscription   Statut Modérateur Dernière intervention   7 908
 

Bonjour,

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

0
phil5718
 

Bonjour Mamiemando,

Merci, je vais regarder tout ça

0