如何在Python脚本中同时从文件和终端读取输入?

时间:2019-02-22 15:13:59

标签: python bash input io-redirection

我有一个Python脚本,该脚本使用Shell重定向从文件中读取一些数据,例如

python script.py < input.txt

在处理完文件后,我想允许用户从终端输入一些参数。我该怎么办?

2 个答案:

答案 0 :(得分:1)

重定向一直持续到该过程终止为止。所以你不能做你想做的。而是使用命令行参数指定输入文件,如下所示:

python script.py --input input.txt

使用argparse从命令行中选择名称,然后像普通文件一样读取它。这将使sys.stdin可以自由地与input()进行交互。

答案 1 :(得分:1)

当您用bash标记问题时,我想我可以说一下显式打开/dev/tty的技巧。这通常仅用于询问绝不存在文件中的 secrets 的程序。但这即使在使用重定向的stdin启动脚本之后也可以从终端读取内容。

无论如何,除了非常特殊用例外,我强烈建议改用命令行参数,以允许程序从指定的文件读取,然后通常从stdin读取。