Я хочу внести изменения в свой код, чтобы я мог ввести свой файл в ту же командную строку, в которой я вызываю код Python, например :
script.py filename
В настоящее время мой код:
filename = raw_input('Enter a filename: ')
with open(filename) as f:
next(f)
for lines in f:
Пожалуйста, подскажите, как мне поступить так же.
Я использовал бы sys.argv.
import sys
filename = sys.argv[1]
sys.argv
будет список элементов в Вашем вызове.
Использовать sys
модуль:
import sys
with open(sys.argv[1]) as filename:
for line in filename:
print(line)
См. также, Как читать/обрабатывать параметры командной строки? для использования argparse
модуль для создания пользовательских флагов такой как -f <filename>
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