Ответ 1
Если ваша цель - прочитать один или несколько читаемых файлов, вы можете попробовать следующее:
parser.add_argument('file', type=argparse.FileType('r'), nargs='+')
nargs='+'
собирает все аргументы командной строки в список. Также должен быть один или несколько аргументов или сообщение об ошибке будет сгенерировано.
type=argparse.FileType('r')
пытается открыть каждый аргумент как файл для чтения. Он будет генерировать сообщение об ошибке, если argparse не сможет открыть файл. Вы можете использовать это для проверки того, является ли аргумент допустимым и читаемым файлом.
В качестве альтернативы, если ваша цель - читать нулевые или более читаемые файлы, вы можете просто заменить nargs='+'
на nargs='*'
. Это даст вам пустой список, если не указаны аргументы командной строки. Возможно, вам захочется открыть stdin, если вам не предоставлены какие-либо файлы, - если это так, просто добавьте default=[sys.stdin]
в качестве параметра add_argument
.
А затем обработать файлы в списке:
args = parser.parse_args()
for f in args.file:
for line in f:
# process file...
Подробнее о nargs: https://docs.python.org/2/library/argparse.html#nargs
Подробнее о типе: https://docs.python.org/2/library/argparse.html#type