Comment puis-je avoir un script Python qui a) peut accepter les entrées utilisateur et comment le faire b) lire des arguments s'il est exécuté à partir de la ligne de commande?
argparse
au lieu de optparse
.
Comment puis-je avoir un script Python qui a) peut accepter les entrées utilisateur et comment le faire b) lire des arguments s'il est exécuté à partir de la ligne de commande?
argparse
au lieu de optparse
.
Réponses:
Pour lire les entrées utilisateur, vous pouvez essayer le cmd
module pour créer facilement un mini-interpréteur de ligne de commande (avec des textes d'aide et la saisie semi-automatique) 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 ligne de commande sont entrées sys.argv
. Essayez ceci dans votre script:
import sys
print (sys.argv)
Il existe deux modules pour analyser les options de ligne de commande: (obsolète depuis Python 2.7, utilisez optparse
argparse
plutôt) et getopt
. Si vous voulez simplement entrer des fichiers dans votre script, voyez la puissance de fileinput
.
La référence de la bibliothèque Python est votre amie.
var = raw_input("Please enter something: ")
print "you entered", var
Ou pour Python 3:
var = input("Please enter something: ")
print("You entered: " + var)
raw_input
, c'est une fonction intégrée.
raw_input
n'est plus disponible dans Python 3.x. Mais a raw_input
été renommé input
, donc la même fonctionnalité existe.
input_var = input("Enter something: ")
print ("you entered " + input_var)
import fileinput result=[] for line in fileinput.input(): result.append(line)
Le meilleur moyen de traiter les arguments de ligne de commande est le argparse
module.
Utilisez raw_input()
pour obtenir une entrée utilisateur. Si vous importez, readline module
vos utilisateurs auront la modification et l'historique des lignes.
Ce programme simple vous aide à comprendre comment alimenter les entrées utilisateur à partir de la ligne de commande et à afficher l'aide sur la transmission d'arguments non valides.
import argparse
import sys
try:
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number",
type=int)
args = parser.parse_args()
#print the square of user input from cmd line.
print args.square**2
#print all the sys argument passed from cmd line including the program name.
print sys.argv
#print the second argument passed from cmd line; Note it starts from ZERO
print sys.argv[1]
except:
e = sys.exc_info()[0]
print e
1) Pour trouver la racine carrée de 5
C:\Users\Desktop>python -i emp.py 5
25
['emp.py', '5']
5
2) Passer un argument non valide autre que le nombre
C:\Users\bgh37516\Desktop>python -i emp.py five
usage: emp.py [-h] square
emp.py: error: argument square: invalid int value: 'five'
<type 'exceptions.SystemExit'>
Utilisez 'raw_input' pour l'entrée depuis une console / un terminal.
si vous voulez juste un argument de ligne de commande comme un nom de fichier ou quelque chose par exemple
$ python my_prog.py file_name.txt
alors vous pouvez utiliser sys.argv ...
import sys
print sys.argv
sys.argv est une liste où 0 est le nom du programme, donc dans l'exemple ci-dessus sys.argv [1] serait "nom_fichier.txt"
Si vous voulez avoir des options complètes sur la ligne de commande, utilisez le module optparse.
Pev
Si vous exécutez Python <2.7, vous avez besoin d’ optparse qui, comme l'explique le document, créera une interface avec les arguments de ligne de commande qui sont appelés lorsque votre application est exécutée.
Cependant, en Python ≥2.7, optparse a été déconseillé et a été remplacé par l' argparse comme indiqué ci-dessus. Un exemple rapide de la documentation ...
Le code suivant est un programme Python qui prend une liste d'entiers et produit la somme ou le max:
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print args.accumulate(args.integers)
À partir de Python 3.22.7, il existe désormais argparse pour le traitement des arguments de ligne de commande.
S'il s'agit d'une version 3.x, utilisez simplement:
variantname = input()
Par exemple, vous souhaitez saisir 8:
x = input()
8
x sera égal à 8 mais ce sera une chaîne sauf si vous le définissez autrement.
Vous pouvez donc utiliser la commande convert, comme:
a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07
import six
if six.PY2:
input = raw_input
print(input("What's your name? "))