De intrare de utilizator și argumente în linia de comandă

Cum am un script Python care o) poate accepta intrare de utilizator și cum pot face b) citește în argumente dacă rulat din linia de comandă?

Comentarii la întrebare (3)
Soluția

Pentru a citi intrare utilizator, puteți încerca la " cmd " modul pentru a crea cu ușurință o mini-linie de comandă interpret (cu texte de ajutor și autocompletare) și raw_input (input pentru Python 3+) pentru a citi o linie de text de la utilizator.

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

Linie de comandă intrări sunt în sys.argv. Încercați acest lucru în script-ul dvs.:

import sys
print (sys.argv)

Există două module pentru parsarea opțiuni de linie de comandă: optparse (învechită începând cu Python 2.7, utilizarea argparse în loc) și getopt. Dacă doriți doar pentru fișiere de intrare la script-ul dvs., iată puterea fileinput.

De Python library reference este prietenul tău.

Comentarii (3)
var = raw_input("Please enter something: ")
print "you entered", var

Sau pentru Python 3:

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

raw_input nu mai este disponibil in Python 3.x. Dar raw_input a fost redenumit "intrare", astfel încât aceeași funcționalitate există.

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

Documentație de modificare

Comentarii (4)

Cel mai bun mod de a procesa argumente în linia de comandă este argparse module.

Folosesc raw_input()pentru a obține de intrare de utilizator. Dacă importați [readline modul`]2 utilizatorii vor avea linie de editare și istorie.

Comentarii (2)

Aveți grijă să nu pentru a utiliza "intrare" funcția, dacă nu știi ce ai de're face. Spre deosebire de raw_input, input va accepta orice expresie python, deci's place "eval"

Comentarii (0)

Acest program simplu vă ajută în a înțelege cum să se hrănească introduse de utilizator de la linia de comandă și să arate ajuta pe trecerea de argument invalid.

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. A găsi rădăcina pătrată din 5
C:\Users\Desktop>python -i emp.py 5
25
['emp.py', '5']
5
  1. Trecerea invalid argument, altul decât numărul
C:\Users\bgh37516\Desktop>python -i emp.py five
usage: emp.py [-h] square
emp.py: error: argument square: invalid int value: 'five'
Comentarii (0)

Folosi 'raw_input' de intrare de la o consolă/terminal.

daca vrei doar un argument în linia de comandă ca un nume de fișier sau ceva de exemplu

$ python my_prog.py file_name.txt

apoi, puteți utiliza sys.argv...

import sys
print sys.argv

sys.argv este o listă în care 0 este numele programului, deci, în exemplul de mai sus sys.argv[1] ar fi "nume_fișier.txt"

Dacă doriți să aveți deplină pe opțiuni de linie de comandă utilizați optparse module.

Pev

Comentarii (0)

Dacă se execută Python <2.7, ai nevoie optparse, care, ca doctorul explică va crea o interfață cu linie de comandă argumente, care sunt numite atunci când cererea este rulat.

Cu toate acestea, în Python ≥2.7, optparse a fost depreciat, și a fost înlocuit cu argparse așa cum se arată mai sus. Un exemplu rapid de la docs...

codul De mai jos este un program in Python care are o listă de numere întregi și produce fie suma sau 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)
Comentarii (0)

Ca de Python 3.2 2.7, există acum argparse pentru prelucrarea argumente în linia de comandă.

Comentarii (1)

Daca's 3.versiune x, atunci pur și simplu utilizați:

variantname = input()

De exemplu, doriți să introduceți 8:

x = input()
8

x va fi egal cu 8 dar's de gând să fie un șir cu excepția dacă definiți altfel.

Astfel încât să puteți utiliza comanda de conversie, cum ar fi:

a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07
Comentarii (0)

În Python 2:

data = raw_input('Enter something: ')
print data

În Python 3:

data = input('Enter something: ')
print(data)
Comentarii (0)
import six

if six.PY2:
    input = raw_input

print(input("What's your name? "))
Comentarii (0)