Come posso avere uno script Python che a) possa accettare l'input dell'utente e come posso farlo b) leggere negli argomenti se eseguito dalla riga di comando?
argparse
Anziché optparse
.
Come posso avere uno script Python che a) possa accettare l'input dell'utente e come posso farlo b) leggere negli argomenti se eseguito dalla riga di comando?
argparse
Anziché optparse
.
Risposte:
Per leggere l'input dell'utente puoi provare il cmd
modulo per creare facilmente un mini interprete da riga di comando (con testi di aiuto e completamento automatico) e raw_input
( input
per Python 3+) per leggere una riga di testo dall'utente.
text = raw_input("prompt") # Python 2
text = input("prompt") # Python 3
Sono presenti gli input della riga di comando sys.argv
. Prova questo nel tuo script:
import sys
print (sys.argv)
Esistono due moduli per l'analisi delle opzioni della riga di comando: (obsoleto da Python 2.7, utilizzare optparse
argparse
invece) e getopt
. Se vuoi solo inserire file nel tuo script, osserva il potere di fileinput
.
Il riferimento alla libreria Python è tuo amico.
var = raw_input("Please enter something: ")
print "you entered", var
O per Python 3:
var = input("Please enter something: ")
print("You entered: " + var)
raw_input
, è una funzione integrata.
raw_input
non è più disponibile in Python 3.x. Ma è raw_input
stato rinominato input
, quindi esiste la stessa funzionalità.
input_var = input("Enter something: ")
print ("you entered " + input_var)
import fileinput result=[] for line in fileinput.input(): result.append(line)
Il modo migliore per elaborare gli argomenti della riga di comando è il argparse
modulo.
Utilizzare raw_input()
per ottenere l'input dell'utente. Se importi i readline module
tuoi utenti avranno la modifica e la cronologia delle linee.
Questo semplice programma ti aiuta a capire come alimentare l'input dell'utente dalla riga di comando e a mostrare aiuto nel passaggio di argomenti non validi.
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) Per trovare la radice quadrata di 5
C:\Users\Desktop>python -i emp.py 5
25
['emp.py', '5']
5
2) Passaggio di argomenti non validi diversi dal numero
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'>
Utilizzare 'raw_input' per l'input da una console / terminale.
se vuoi solo un argomento da riga di comando come un nome di file o qualcosa di simile ad es
$ python my_prog.py file_name.txt
allora puoi usare sys.argv ...
import sys
print sys.argv
sys.argv è un elenco in cui 0 è il nome del programma, quindi nell'esempio sopra sys.argv [1] sarebbe "nome_file.txt"
Se si desidera disporre di opzioni complete sulla riga di comando, utilizzare il modulo optparse.
PEV
Se si esegue Python <2.7, è necessario optparse , che come spiega il documento creerà un'interfaccia per gli argomenti della riga di comando che vengono chiamati quando l'applicazione viene eseguita.
Tuttavia, in Python ≥2.7, optparse è stato deprecato ed è stato sostituito con argparse come mostrato sopra. Un rapido esempio dai documenti ...
Il codice seguente è un programma Python che accetta un elenco di numeri interi e produce la somma o il massimo:
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)
A partire da Python 3.22.7, ora esiste argparse per l'elaborazione degli argomenti della riga di comando.
Se è una versione 3.x, basta semplicemente usare:
variantname = input()
Ad esempio, si desidera inserire 8:
x = input()
8
x sarà uguale a 8 ma sarà una stringa tranne se diversamente definito.
Quindi puoi usare il comando convert, come:
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? "))