Читайте из файла или STDIN

Большинство людей скажет Вам, что переполнение стека происходит с рекурсией без пути выхода - в то время как главным образом верный, если Вы будете работать с достаточно большими структурами данных, даже надлежащий путь выхода рекурсии не поможет Вам.

опции Some в этом случае:

59
задан Ryan R. Rosario 16 November 2009 в 21:32
поделиться

3 ответа

Проще говоря:

import sys
# parse command line
if file_name_given:
    inf = open(file_name_given)
else:
    inf = sys.stdin

На этом этапе вы должны использовать inf для чтения из файла. В зависимости от того, было ли указано имя файла, оно будет считываться из данного файла или из стандартного ввода.

Когда вам нужно закрыть файл, вы можете сделать следующее:

if inf is not sys.stdin:
    inf.close()

Однако в большинстве случаев закрыть sys.stdin , если вы закончили с ним.

59
ответ дан 24 November 2019 в 18:02
поделиться

Модуль fileinput может делать то, что вы хотите - при условии, что аргументы, не являющиеся опциями, находятся в args , затем:

import fileinput
for line in fileinput.input(args):
    print line

Если args пусто, то входной файл . input () будет читать из stdin; в противном случае он читает из каждого файла по очереди, аналогично Perl while (<>) .

74
ответ дан 24 November 2019 в 18:02
поделиться

Что-то вроде:

if input_from_file:
    f = open(file_name, "rt")
else:
    f = sys.stdin
inL = f.readline()
while inL:
    print inL.rstrip()
    inL = f.readline()
1
ответ дан 24 November 2019 в 18:02
поделиться
Другие вопросы по тегам:

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