簡體   English   中英

閱讀sys.stdin后的Python交互

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM