Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python脚本中从文件和终端读取输入?_Python_Bash_Input_Io Redirection - Fatal编程技术网

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

如何在Python脚本中从文件和终端读取输入?,python,bash,input,io-redirection,Python,Bash,Input,Io Redirection,我有一个Python脚本,它使用shell重定向从文件中读取一些数据,例如 python script.py < input.txt python script.py

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

python script.py < input.txt
python script.py

处理完文件后,我想允许用户从终端输入一些参数。如何执行此操作?

重定向将持续到进程终止。所以你不能做你想做的事。相反,请使用命令行参数指定输入文件,如下所示:

python script.py --input input.txt

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

做您想要的交互式事情,因为您已经用
bash
标记了这个问题,我想我可以说清楚地打开
/dev/tty
的诀窍。这通常仅用于询问机密的程序,这些机密不应存在于文件中。但这将允许在使用重定向stdin启动脚本后从终端读取数据


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

使用
原始输入
输入
?这就产生了
EOFError