571 votes

Comment demander l'entrée de l'utilisateur et lire les arguments de la ligne de commande ?

Comment faire pour avoir un script Python qui a) peut accepter l'entrée de l'utilisateur et comment faire pour qu'il b) lise les arguments s'il est exécuté depuis la ligne de commande ?

9 votes

La réponse dépend de votre version de Python. Python 3.x fait cela un peu différemment de Python 2.7.

4 votes

Et Python 2.7 fait aussi cela un peu différemment des versions antérieures à la 2.7, par ex. argparse au lieu de optparse .

556voto

Antti Rasinen Points 2837

Pour lire l'entrée de l'utilisateur, vous pouvez essayer le site cmd module pour créer facilement un mini-interprète de ligne de commande (avec textes d'aide et autocomplétion) et raw_input ( input pour Python 3+) pour lire une ligne de texte de l'utilisateur.

text = raw_input("prompt")  # Python 2
text = input("prompt")  # Python 3

Les entrées de la ligne de commande sont dans sys.argv . Essayez ceci dans votre script :

import sys
print (sys.argv)

Il existe deux modules pour analyser les options de la ligne de commande : optparse (déprécié depuis Python 2.7, utiliser argparse à la place) et getopt . Si vous voulez simplement entrer des fichiers dans votre script, admirez la puissance de fileinput .

El Référence de la bibliothèque Python est votre ami.

72 votes

raw_input a été renommé en input dans Python 3.x - documentation ici

1 votes

1 votes

Sys.argv doit être fourni avec le numéro de l'argument, si vous passez un paramètre en tant que valeur, par exemple python nom_fichier.py 2017-02-10, et que vous voulez utiliser la date, ce sera sys.argv[1], sinon ce sera une liste telle que [nom_fichier.py,2017-02-10].

479voto

lbz Points 5066
var = raw_input("Please enter something: ")
print "you entered", var

Ou pour Python 3 :

var = input("Please enter something: ")
print("You entered: " + var)

29 votes

Il convient de noter que vous n'êtes pas obligé d'importer raw_input c'est une fonction intégrée.

7 votes

Il n'est pas nécessaire d'utiliser str() dans la concaténation des impressions puisque toutes les données saisies seront de type str(ing) par défaut (chiffres pairs).

205voto

steampowered Points 2179

raw_input n'est plus disponible dans Python 3.x. Mais raw_input a été renommé input La même fonctionnalité existe donc.

input_var = input("Enter something: ")
print ("you entered " + input_var) 

Documentation du changement

24 votes

En Python 2.7, input() ne convertit pas les valeurs en chaînes de caractères. Donc si vous essayez de faire ceci : input_variable1 = input ("Enter the first word or phrase : "), vous obtiendrez une erreur : Traceback (dernier appel le plus récent) : return eval(raw_input(prompt)) Fichier "<string>", ligne 1, dans <module> NameError : le nom 'bad' n'est pas défini

0 votes

Input_var = input ("Press 'E' and 'Enter' to Exit : ") NameError : name 'e' is not defined J'utilise Python 2.5. Comment, je peux surmonter cette erreur.

0 votes

Vous pouvez éviter la notification du Traceback en utilisant l'import suivant qui est fourni avec Python 2.7 : import fileinput result=[] for line in fileinput.input(): result.append(line)

33voto

Dave Webb Points 90034

La meilleure façon de traiter les arguments de la ligne de commande est la fonction argparse module.

Utilice raw_input() pour obtenir l'avis de l'utilisateur. Si vous importez le readline module vos utilisateurs disposeront d'une édition de ligne et d'un historique.

0 votes

Readline n'est cependant disponible que sur unix.

5 votes

Argparse est le nouveau optparse

19voto

Vhaerun Points 2467

Attention à ne pas utiliser le input à moins que vous ne sachiez ce que vous faites. Contrairement à raw_input , input acceptera n'importe quelle expression python, donc c'est un peu comme si eval

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X