Pergunta

Como faço para ter um script em Python que a) pode aceitar a entrada do usuário e como posso fazer com que b) de leitura em argumentos se executar a partir da linha de comando?

Foi útil?

Solução

Para ler a entrada do usuário, você pode tentar o cmd módulo para criar facilmente um mini-interpretador de linha de comando (com textos de ajuda e de auto-preenchimento) e raw_input (input para Python 3+) para ler uma linha de texto do usuário.

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

Linha de comando entradas são em sys.argv.Tente isso no seu script:

import sys
print (sys.argv)

Existem dois módulos para análise de opções de linha de comando: optparse (descontinuado desde o Python 2.7, use argparse em vez disso) e getopt.Se você quiser apenas para arquivos de entrada para o seu script, eis que o poder de fileinput.

O Python library reference é seu amigo.

Outras dicas

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

Ou para Python 3:

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

raw_input já está disponível no Python 3.x.Mas raw_input foi renomeado input, assim a mesma funcionalidade existe.

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

Documentação da alteração

A melhor maneira para o processo de argumentos de linha de comando é o argparse módulo.

Utilização raw_input() para obter a entrada do usuário.Se você importar o readline module o seu blog vai ter a edição de linha e história.

Cuidado para não usar o input função, a menos que você souber o que está fazendo.Ao contrário de raw_input, input vai aceitar qualquer python expressão, então é meio que como eval

Este programa simples que ajuda na compreensão de como alimentar a entrada do usuário a partir da linha de comando e mostrar ajudar na passagem de argumento inválido.

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) Para encontrar a raiz quadrada de 5

C:\Users\Desktop>python -i emp.py 5
25
['emp.py', '5']
5

2) a Passagem de argumento inválido diferente número de

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'>

Use 'raw_input" para a entrada de um console/terminal.

se você quer apenas um argumento de linha de comando como de um arquivo de nome ou algo e.g.

$ python my_prog.py file_name.txt

em seguida, você pode usar o comando sys.argv...

import sys
print sys.argv

sys.argv é uma lista onde 0 é o nome do programa, de forma que no exemplo acima sys.argv[1] seria "file_name.txt"

Se você quer ter o máximo em opções de linha de comando usa o módulo optparse.

Pev

Se você estiver executando o Python <2.7, você precisa optparse, que, como o doc explica irá criar uma interface para os argumentos de linha de comando que são chamadas quando o seu aplicativo é executado.

No entanto, em Python ≥2.7, optparse foi substituído e foi substituído com o argparse como mostrado acima.Um exemplo rápido do que o google docs...

O código a seguir é um programa Python que faz uma lista de números inteiros e produz a soma ou o 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)

Como de Python 3.2 2.7, existe agora argparse para o processamento de argumentos de linha de comando.

Se é uma 3.x versão em seguida, basta usar:

variantname = input()

Por exemplo, você deseja entrada 8:

x = input()
8

x será igual a 8, mas vai ser uma seqüência de caracteres, exceto se definido de outra forma.

Assim, você pode usar o comando convert, como:

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

No Python 2:

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

No Python 3:

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

if six.PY2:
    input = raw_input

print(input("What's your name? "))
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top