Python читает из аргументов командной строки или стандартного ввода - PullRequest
9 голосов
/ 15 апреля 2011

При написании текстово-ориентированных программ командной строки на Python я часто хочу прочитать либо все файлы, переданные в командной строке, либо стандартный ввод (XOR) (как это делает Unix cat, либо Perl's <>).Итак, я говорю

if len(args) == 0:  # result from optparse
    input = sys.stdin
else:
    input = itertools.chain(*(open(a) for a in args))

Это способ Pythonic сделать это, или я пропустил какую-то часть библиотеки?

Ответы [ 3 ]

13 голосов
/ 15 апреля 2011

Вам нужно fileinput .

Стандартный вариант использования:

import fileinput
for line in fileinput.input():
  process(line)
2 голосов
/ 15 апреля 2011
1 голос
/ 07 июня 2014

В Python 3 argparse очень хорошо обрабатывает объекты типа файла .Это чрезвычайно мощный модуль, и документы содержат много примеров, поэтому легко быстро написать нужный код.(Как Pythonic!)

Вы также можете воспользоваться этим вопросом StackOverflow об использовании argparse для опционального чтения со стандартного ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...