Введите имя файла в командной строке в качестве аргумента в Python [закрыто]

Я хочу внести изменения в свой код, чтобы я мог ввести свой файл в ту же командную строку, в которой я вызываю код Python, например :

script.py filename

В настоящее время мой код:

filename = raw_input('Enter a filename: ')
with open(filename) as f:
   next(f)
   for lines in f:

Пожалуйста, подскажите, как мне поступить так же.

0
задан 26 July 2018 в 03:53

3 ответа

Я использовал бы sys.argv.

import sys
filename = sys.argv[1]

sys.argv будет список элементов в Вашем вызове.

1
ответ дан 28 October 2019 в 06:55

Использовать sys модуль:

import sys
with open(sys.argv[1]) as filename:
        for line in filename:
               print(line)

См. также, Как читать/обрабатывать параметры командной строки? для использования argparse модуль для создания пользовательских флагов такой как -f <filename>

0
ответ дан 28 October 2019 в 06:55

sys.argv является самым легким для простого варианта использования.

Для более усовершенствованного использования Вы могли использовать argparse, но я предпочел бы click (“Набор Создания Интерфейса командной строки”), который делает инструменты командной строки создания с Python действительно легкими:

import click
@click.command()
@click.argument('filename', type=click.Path(exists=True, readable=True), nargs=1)
def main(filename):
    ...

main()

использование @click.option() можно также создать пользовательские флаги такой как --filename.

Это приводит намного легче аргументы использования, поскольку можно определить входные типы, которые проверяются автоматически. Это также производит хорошие сообщения об ошибках и с --help это печатает информацию об использовании:

Usage: test.py [OPTIONS] FILENAME

Options:
  --help  Show this message and exit.

Необходимо будет установить click:

# Python2:
pip install click

# Python3:
pip3 install click
1
ответ дан 28 October 2019 в 06:55

Другие вопросы по тегам:

Похожие вопросы: