Python 使用标准输出时的交互式用户输入

Python 使用标准输出时的交互式用户输入,python,Python,在脚本中,我使用sys.stdout.write()将处理后的数据输出到stdout,稍后在CLI上使用stdout将stdout重定向到文件: python.exe script.py > file.out 我无法在python脚本中写入文件,因为无法知道重定向的文件 我的问题是,我还使用了raw_input(),因为我需要用户在处理开始之前传递特定的数字,但当我重定向stdout时,不会显示提示-即脚本等待用户输入,但不会显示任何内容 有人能告诉我怎么处理吗 TIA将文件名作为命令行

在脚本中,我使用
sys.stdout.write()
将处理后的数据输出到stdout,稍后在CLI上使用stdout将stdout重定向到文件:

python.exe script.py > file.out
我无法在python脚本中写入文件,因为无法知道重定向的文件

我的问题是,我还使用了
raw_input()
,因为我需要用户在处理开始之前传递特定的数字,但当我重定向stdout时,不会显示提示-即脚本等待用户输入,但不会显示任何内容

有人能告诉我怎么处理吗


TIA将文件名作为命令行参数,而不是重定向标准输出。这样,您就可以正常打印输出或使用
raw\u 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

这将适用于任何平台。

查看这是否适用于您:

#!/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。

默认情况下,我想打印到stdout。我可以检查脚本后是否有参数,如果没有,则将其写入标准输出,而不是文件,但我正在寻找一种方法,如果可能的话,不从该脚本写入文件。Thanks@Ghostly为什么?写入文件(尤其是stdout)有什么问题?这和普通的
打印没有什么不同。好吧,也许你是对的。我有两个交互脚本,在本例中需要默认为stdout。我将检查是否有参数-如果有,写入文件,如果没有,我将使用标准输出。谢谢你应该补充一点,在windows中你必须安装tee程序。