как я могу задать отрезок указываемый в квадратных скобках lines = f.readlines()[:] через командную строку

Есть строчка кода lines = f.readlines()[:]

Числа в [:] отвечают за начальную и конечную строку чтения.

Объясните как совсем глупому новичку, как сделать так, чтобы я мог вводить через командную строку эти числа. Понимаю что argparse. Но совсем не понимаю как, куда и чего. способ нужен максимально простой или примитивный. Без ckick и подобных библиотек.

Заранее спасибо!


Ответы (1 шт):

Автор решения: GrAnd

Максимально примитивный способ - это просто взять аргументы командной строки из списка 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
как сделать так, чтобы я мог вводить через командную строку
→ Ссылка