我有一个Python脚本,该脚本使用Shell重定向从文件中读取一些数据,例如
python script.py < input.txt
在处理完文件后,我想允许用户从终端输入一些参数。我该怎么办?
答案 0 :(得分:1)
重定向一直持续到该过程终止为止。所以你不能做你想做的。而是使用命令行参数指定输入文件,如下所示:
python script.py --input input.txt
使用argparse
从命令行中选择名称,然后像普通文件一样读取它。这将使sys.stdin
可以自由地与input()
进行交互。
答案 1 :(得分:1)
当您用bash
标记问题时,我想我可以说一下显式打开/dev/tty
的技巧。这通常仅用于询问绝不存在文件中的 secrets 的程序。但这即使在使用重定向的stdin启动脚本之后也可以从终端读取内容。
无论如何,除了非常特殊用例外,我强烈建议改用命令行参数,以允许程序从指定的文件读取,然后通常从stdin读取。