在使用stdout时进行交互式用户输入
在一个脚本中,我使用 sys.stdout.write()
来输出处理后的数据到标准输出(stdout),然后我在命令行中把标准输出重定向到一个文件:
python.exe script.py > file.out
我无法在 Python 脚本中直接写入文件,因为重定向的文件是无法提前知道的。
我的问题是,我还使用了 raw_input()
,因为我需要用户在处理开始前输入一个特定的数字,但由于我重定向了标准输出,提示信息就不会显示出来,也就是说,脚本在等待用户输入时什么都不显示。
有没有人能给我个建议,怎么解决这个问题?
谢谢!
2 个回答
2
看看这个对你有没有用:
#!/usr/bin/python
import sys
import os
# Disable buffering for stdout
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
x = raw_input(">")
print x
把它这样运行:
python ./test.py | tee ./file.out
现在,你会在控制台上看到输出,同时它也会被保存到file.out这个文件里。
0
把文件名当作命令行参数来用,而不是把输出重定向到文件。这样,你就可以正常打印输出或者使用 raw_input()
了。举个例子:
import sys
outfile = open(sys.argv[1], 'w')
# write to the outfile
x = raw_input("What's your name?")
outfile.write(x)
使用方法:
python myscript.py file.out
这样在任何平台上都能运行。