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

python input command-line-arguments

1103127 просмотра

12 ответа

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

Автор: Teifion Источник Размещён: 12.11.2019 09:04

Ответы (12)


462 плюса

Решение

Для чтения пользовательского ввода , вы можете попробовать на 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 является вашим другом.

Автор: Antti Rasinen Размещён: 16.09.2008 09:50

459 плюса

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

Или для Python 3:

var = input("Please enter something: ")
print("You entered: " + var)
Автор: lbz Размещён: 16.09.2008 09:48

202 плюса

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

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

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

Автор: steampowered Размещён: 30.11.2011 10:53

33 плюса

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

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

Автор: Dave Webb Размещён: 16.09.2008 09:48

18 плюса

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

Автор: Vhaerun Размещён: 16.09.2008 09:58

15 плюса

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

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'>
Автор: Viswesn Размещён: 20.05.2015 05:33

10 плюса

Используйте 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.

пэВ

Автор: Simon Peverett Размещён: 16.09.2008 09:52

9 плюса

Если вы используете 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)
Автор: Matt Olan Размещён: 26.10.2012 03:29

6 плюса

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

Автор: GreenMatt Размещён: 06.08.2010 08:00

6 плюса

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

variantname = input()

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

x = input()
8

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

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

a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07
Автор: CorpseDead Размещён: 17.02.2017 06:31

2 плюса

В Python 2:

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

В Python 3:

data = input('Enter something: ')
print(data)
Автор: Mark Размещён: 01.06.2017 06:00

1 плюс

import six

if six.PY2:
    input = raw_input

print(input("What's your name? "))
Автор: Will Charlton Размещён: 17.01.2019 05:10
Вопросы из категории :
32x32