Аргументы ввода и командной строки пользователя

Как у меня есть сценарий Python, который: а) может принимать пользовательский ввод и как это сделать. B) читать аргументы, если они запускаются из командной строки?

Ответ 1

Чтобы прочитать ввод пользователя, вы можете попробовать модуль cmd для легкого создания интерпретатора мини-командной строки (с помощью текстов справки и автозаполнения) и raw_input (input для Python 3+ ) для чтения строки текста от пользователя.

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

Входы командной строки находятся в sys.argv. Попробуйте это в script:

import sys
print (sys.argv)

Существует два модуля для разбора параметров командной строки: optparse (устаревший с Python 2.7, используйте argparse) и getopt. Если вы просто хотите вводить файлы в свой script, вот сила fileinput.

Ссылка на библиотеку Python является вашим другом.

Ответ 2

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

Или для Python 3:

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

Ответ 3

raw_input больше не доступен в Python 3.x. Но raw_input было переименовано input, поэтому такая же функциональность существует.

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

Документация об изменении

Ответ 4

Лучшим способом обработки аргументов командной строки является argparse.

Используйте raw_input(), чтобы получить пользовательский ввод. Если вы импортируете readline module, у ваших пользователей будет редактирование строк и история.

Ответ 5

Осторожно не использовать функцию input, если вы не знаете, что делаете. В отличие от raw_input, input будет принимать любое выражение python, поэтому оно похоже на eval

Ответ 6

Эта простая программа поможет вам понять, как подавать пользовательский ввод из командной строки и показывать справку о передаче недопустимого аргумента.

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) Чтобы найти квадратный корень из 5

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

2) Передача неверного аргумента, отличного от номера

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

Ответ 7

Используйте "raw_input" для ввода с консоли/терминала.

если вам просто нужен аргумент командной строки, например имя файла или что-то подобное.

$ python my_prog.py file_name.txt

то вы можете использовать sys.argv...

import sys
print sys.argv

sys.argv - это список, где 0 - имя программы, поэтому в приведенном выше примере sys.argv [1] будет "file_name.txt"

Если вы хотите иметь полные параметры командной строки, используйте модуль optparse.

PEV

Ответ 8

Если вы используете Python < 2.7, вам нужно optparse, которое, как объясняет doc, создаст интерфейс для командной строки аргументы, вызываемые при запуске приложения.

Однако в Python ≥2.7 optparse устарел и был заменен на argparse, как показано выше. Быстрый пример из документов...

Следующий код представляет собой программу Python, которая принимает список целых чисел и производит либо сумму, либо 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)

Ответ 9

Как и в случае с Python 3.2 2.7, для обработки аргументов командной строки теперь argparse.

Ответ 10

Если это версия 3.x, просто используйте:

variantname = input()

Например, вы хотите ввести 8:

x = input()
8

x будет равно 8, но это будет строка, за исключением случаев, когда вы определяете ее иначе.

Итак, вы можете использовать команду convert, например:

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

Ответ 11

В Python 2:

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

В Python 3:

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

Ответ 12

import six

if six.PY2:
    input = raw_input

print(input("What your name? "))