как я могу задать отрезок указываемый в квадратных скобках lines = f.readlines()[:] через командную строку
Есть строчка кода lines = f.readlines()[:]
Числа в [:] отвечают за начальную и конечную строку чтения.
Объясните как совсем глупому новичку, как сделать так, чтобы я мог вводить через командную строку эти числа. Понимаю что argparse. Но совсем не понимаю как, куда и чего. способ нужен максимально простой или примитивный. Без ckick и подобных библиотек.
Заранее спасибо!
Ответы (1 шт):
Максимально примитивный способ - это просто взять аргументы командной строки из списка sys.argv:
import sys
if len(sys.argv) <= 2:
print("Программа требует как минимум 2 аргумента в командной строке.")
sys.exit(1)
start = int(sys.argv[1])
end = int(sys.argv[2])
text = "Объясните как совсем глупому новичку, как сделать так, чтобы я мог вводить через командную строку эти числа."
print(text[start:end])
D:\Programming\Python\1>python args1.py
Программа требует как минимум 2 аргумента в командной строке.
D:\Programming\Python\1>python args1.py 38
Программа требует как минимум 2 аргумента в командной строке.
D:\Programming\Python\1>python args1.py 38 97
как сделать так, чтобы я мог вводить через командную строку
Проверку, что там числа, уж как-нибудь сами...
Если же нужно через argparse, то тоже не сложно:
import argparse
parser = argparse.ArgumentParser(description='Моя программа')
parser.add_argument('--start', '-s', type=int, default=0 , metavar="string_number", help='Начальная строка (по-умолчанию первая)')
parser.add_argument('--end' , '-e', type=int, default=-1, metavar="string_number", help='Конечная строка (по-умолчанию последняя)')
args = parser.parse_args()
print(text[args.start:args.end])
D:\Programming\Python\1>python args1.py -h
usage: args1.py [-h] [--start string_number] [--end string_number]
Моя программа
optional arguments:
-h, --help show this help message and exit
--start string_number, -s string_number
Начальная строка (по-умолчанию первая)
--end string_number, -e string_number
Конечная строка (по-умолчанию последняя)
D:\Programming\Python\1>python args1.py
Объясните как совсем глупому новичку, как сделать так, чтобы я мог вводить через командную строку эти числа
D:\Programming\Python\1>python args1.py 38
usage: args1.py [-h] [--start string_number] [--end string_number]
args1.py: error: unrecognized arguments: 38
D:\Programming\Python\1>python args1.py -s 38
как сделать так, чтобы я мог вводить через командную строку эти числа
D:\Programming\Python\1>python args1.py --end 97
Объясните как совсем глупому новичку, как сделать так, чтобы я мог вводить через командную строку
D:\Programming\Python\1>python args1.py -s 38 -e 97
как сделать так, чтобы я мог вводить через командную строку
Если же хотите как в первом варианте (просто числа без ключей), но с argparse, то задайте описание аргументов так:
parser.add_argument('start', type=int, metavar="start_string_number", help='Начальная строка (по-умолчанию первая)')
parser.add_argument('end' , type=int, metavar="end_string_number", help='Конечная строка (по-умолчанию последняя)')
D:\Programming\Python\1>python args1.py
usage: args1.py [-h] start_string_number end_string_number
args1.py: error: the following arguments are required: start_string_number, end_string_number
D:\Programming\Python\1>python args1.py -h
usage: args1.py [-h] start_string_number end_string_number
Моя программа
positional arguments:
start_string_number Начальная строка (по-умолчанию первая)
end_string_number Конечная строка (по-умолчанию последняя)
optional arguments:
-h, --help show this help message and exit
D:\Programming\Python\1>python args1.py 38 97
как сделать так, чтобы я мог вводить через командную строку