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

Как сделать скрипт на Python, который a) может принимать пользовательский ввод и как сделать так, чтобы он b) читал аргументы, если его запустить из командной строки?

Комментарии к вопросу (3)
Решение

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

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

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

import sys
print (sys.argv)

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

Справочник по библиотекам Python - ваш друг.

Комментарии (3)
var = raw_input("Please enter something: ")
print "you entered", var

Или для Python 3:

var = input("Please enter something: ")
print("You entered: " + var)
Комментарии (2)

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

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

Документацию изменений

Комментарии (4)

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

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

Комментарии (2)

Осторожны, чтобы не использовать функция ввод, если вы не знаете, что вы're делая. В отличие от raw_input, ввод будет принимать каких-либо выражений Python, так что'ы вроде функции "eval"

Комментарии (0)

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

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
  1. передает недопустимый аргумент другой, чем количество
C:\Users\bgh37516\Desktop>python -i emp.py five
usage: emp.py [-h] square
emp.py: error: argument square: invalid int value: 'five'
Комментарии (0)

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

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

$ python my_prog.py file_name.txt

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

import sys
print sys.argv

Сыс.argv-это список, где 0-это имя программы, так, например, в sys.аргумент argv[1] может быть "имя_файла.тхт"и

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

ПЭВ

Комментарии (0)

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

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

следующий код-это программа Python, которая принимает список целых чисел > и получается либо сумма или максимум:

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)
Комментарии (0)

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

Комментарии (1)

Если это'ы 3.х версий, а затем просто использовать:

variantname = input()

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

x = input()
8

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

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

a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07
Комментарии (0)

В Python 2:

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

В Python 3:

data = input('Enter something: ')
print(data)
Комментарии (0)
import six

if six.PY2:
    input = raw_input

print(input("What's your name? "))
Комментарии (0)