这是一个奇怪的问题,我不能正确缩小搜索条件以找到答案。
我的python脚本有一个raw_input来提示用户输入值。但是,当我尝试运行脚本并将其汇集到文件中时,它会崩溃。
类似" script.py> save.txt的" 不会工作。它甚至没有在命令行中正确地提示我输入。似乎并没有任何迹象表明为什么它不能直观地工作。
答案 0 :(得分:3)
raw_output
将其提示输出到stdout
,您将其重定向到文件。因此,您的提示将最终出现在文件中,程序似乎不会显示提示。一种解决方案是将提示输出到stderr
。
import sys
sys.stderr.write('prompt> ')
value = raw_input()
print('value was: ', value)
您还可以避免使用相同脚本同时使用管道和交互式输入。使用argparse
从命令行标志获取输入并使用管道,或者创建一个将输出保存到文件本身的交互式程序。
根据程序的逻辑,您还可以检查stdout
是否连接到实时控制台:
is_tty = os.isatty(sys.stdout.fileno())
Dolda2000也有一个关于写入/dev/tty
的好处,它将写入正在运行的脚本的控制终端,即使 stdin
和{{1}被重定向。不过,那里的交易是,如果你没有在终端上运行,就不能使用它。
stderr