Як у мене є сценарій Python, який а) може приймати введення користувача та як це зробити, щоб він міг читати в аргументах, якщо запускати з командного рядка?
argparse
замість optparse
.
Як у мене є сценарій Python, який а) може приймати введення користувача та як це зробити, щоб він міг читати в аргументах, якщо запускати з командного рядка?
argparse
замість optparse
.
Відповіді:
Для читання призначеного для користувача введення , ви можете спробувати на cmd
модуль для легкого створення інтерпретатора лінії міні-команд (за допомогою текстів і автодоповнення) і raw_input
( input
для Python 3+) для читання рядка тексту від користувача.
text = raw_input("prompt") # Python 2
text = input("prompt") # Python 3
Вхідні дані командного рядка sys.argv
. Спробуйте це у своєму сценарії:
import sys
print (sys.argv)
Є два модулі для розбору параметрів командного рядка: (застаріло з Python 2.7, використовуйте optparse
argparse
замість цього) та getopt
. Якщо ви просто хочете ввести файли у свій сценарій, дивіться на потужність fileinput
.
Бібліотека посилання Python є вашим другом.
var = raw_input("Please enter something: ")
print "you entered", var
Або для Python 3:
var = input("Please enter something: ")
print("You entered: " + var)
raw_input
, це вбудована функція.
raw_input
більше не доступний в Python 3.x. Але raw_input
було перейменовано input
, тому існує та сама функціональність.
input_var = input("Enter something: ")
print ("you entered " + input_var)
import fileinput result=[] for line in fileinput.input(): result.append(line)
Найкращим способом обробки аргументів командного рядка є argparse
модуль.
Використовуйте raw_input()
для отримання вводу користувача. Якщо ви імпортуєте, readline module
ваші користувачі матимуть редагування рядків та історію.
Ця проста програма допоможе вам зрозуміти, як подати введення користувача з командного рядка та показати допомогу щодо передачі недійсного аргументу.
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'>
Використовуйте '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.
Пев
Якщо ви працюєте з Python <2.7, вам потрібен optparse , який, як пояснює документ, створить інтерфейс до аргументів командного рядка, які викликаються при запуску програми.
Однак у Python ≥2.7 optparse був застарілим і замінений на аргпарсер, як показано вище. Швидкий приклад із документів ...
Наступний код - це програма 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)
Станом на Python 3.22.7, тепер існує аргпарс для обробки аргументів командного рядка.
Якщо це версія 3.x, тоді просто використовуйте:
variantname = input()
Наприклад, ви хочете ввести 8:
x = input()
8
x дорівнюватиме 8, але це буде рядок, за винятком випадків, коли ви визначаєте його інакше.
Таким чином, ви можете використовувати команду convert, наприклад:
a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07
import six
if six.PY2:
input = raw_input
print(input("What's your name? "))