我理解为什么我会得到"错误的文件描述符"此帖子中没有控制台打印时出错:why am I getting IOError: (9, 'Bad file descriptor') error while making print statements?。
我的问题是,如何检测stdout是否可用?我可以简单地做这样的事情:
if os.path.isfile(2):
print "text"
由于
答案 0 :(得分:8)
os.path.isfile()采用文件路径(字符串),而不是文件描述符(数字),因此您的解决方案无法按预期工作。
您可以改为使用os.isatty():
if os.isatty(1):
print "text"
如果 os.isatty()
的参数是连接到终端的打开文件描述符,它将返回True
。
(顺便提一下,请注意stdout
是文件描述符1
。stderr
是文件描述符2
)。
答案 1 :(得分:0)
上述答案对我不起作用。但也许这是Python 2.x中的一个错误:
http://jsfiddle.net/dmitriy_nevzorov/fy31qobe/3/
我使用的是2.7。 os.isatty(1)总是返回true但是print仍然在4k字节后引发异常。我正在使用pythonw.exe在后台运行脚本。