[英]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
調用腳本並與我創建的對象交互,但是在代碼運行后解釋器總是退出,即使我用-i
選項調用Python也是如此。 NB同樣的事情發生在ipython
; 它甚至向我證實我“真的想退出。”
解決方法是編寫代碼以使用作為參數傳入的特定文件,但我想知道是否有一種方法可以使Python不在上面的示例中退出解釋器。
REPL(交互式控制台)在耗盡標准輸入時退出。 通常,標准輸入是控制台,因此只有在您鍵入^ D或手動調用quit()
時才會退出。 但是如果從文件重定向stdin,當到達文件末尾時stdin將會耗盡。
您可以使用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:
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.