Python阅读后互动sys.stdin
Python interactive after reading sys.stdin
我正在尝试编写一个小型图形解析器,它从 stdin
读取并将处理后的输出写入 stdout
,遵循以下行:
# 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 16=] 选项。 N.B。同样的事情发生在 ipython
;它甚至证实了我 "really want to exit."
一种解决方法是编写代码以使用作为参数传入的特定文件,但我想知道是否有办法使 Python 不退出上面示例中的解释器。
REPL(交互式控制台)在耗尽标准输入时退出。通常,标准输入是控制台,因此它仅在您键入 ^D 或手动调用 quit()
时退出。但是如果你从文件重定向标准输入,当你到达文件末尾时标准输入将被耗尽。
您可以使用argparse
在命令行上接受文件,默认为sys.stdin
:
parser = argparse.ArgumentParser()
parser.add_argument('input', type=argparse.FileType(), nargs='?', default=sys.stdin)
args = parser.parse_args()
G = defaultdict(list)
for line in args.input:
...
我正在尝试编写一个小型图形解析器,它从 stdin
读取并将处理后的输出写入 stdout
,遵循以下行:
# 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 16=] 选项。 N.B。同样的事情发生在 ipython
;它甚至证实了我 "really want to exit."
一种解决方法是编写代码以使用作为参数传入的特定文件,但我想知道是否有办法使 Python 不退出上面示例中的解释器。
REPL(交互式控制台)在耗尽标准输入时退出。通常,标准输入是控制台,因此它仅在您键入 ^D 或手动调用 quit()
时退出。但是如果你从文件重定向标准输入,当你到达文件末尾时标准输入将被耗尽。
您可以使用argparse
在命令行上接受文件,默认为sys.stdin
:
parser = argparse.ArgumentParser()
parser.add_argument('input', type=argparse.FileType(), nargs='?', default=sys.stdin)
args = parser.parse_args()
G = defaultdict(list)
for line in args.input:
...