Я пытаюсь написать небольшой граф парсер, который считывает из stdin
и записывает обработанный вывод stdout
вдоль линий:Python интерактивный после прочтения sys.stdin
# parser.py
G = defaultdict(list)
for line in sys.stdin:
node, neighbor = line.split()
G[node].append(neighbor)
print(G)
Я хотел бы, чтобы вызвать сценарий с python -i parser.py < data.txt
и взаимодействовать с объектами, которые я создал, но интерпретатор всегда выходит после запуска кода, даже когда я вызываю Python с опцией -i
. Нотабене То же самое происходит с ipython
; это даже подтверждает для меня, что я «действительно хочу выйти».
Обходной путь заключается в написании кода для использования определенного файла, переданного в качестве аргумента, но мне было интересно, есть ли способ заставить Python не выходить из интерпретатора в приведенном выше примере.
'для линии в fileinput.input():' – jfs
@ J.F.Sebastian: Это не расширяемой. Если OP захочет добавить больше аргументов в будущем, им придется переработать решения на основе 'fileinput'. Такая переработка приводит к нарушению обратной совместимости (например, потому что кто-то хотел передать файл с именем -h'). – Kevin
[YAGNI] (http://en.wikipedia.org/wiki/You_aren't_gonna_need_it) – jfs