我理解为什么在没有控制台的情况下打印时出现“错误的文件描述符”错误:为什么在进行打印语句时出现 IOError: (9, 'Bad file descriptor') 错误?.
我的问题是,如何检测标准输出是否可用?我可以简单地做这样的事情:
if os.path.isfile(2):
print "text"
谢谢
我理解为什么在没有控制台的情况下打印时出现“错误的文件描述符”错误:为什么在进行打印语句时出现 IOError: (9, 'Bad file descriptor') 错误?.
我的问题是,如何检测标准输出是否可用?我可以简单地做这样的事情:
if os.path.isfile(2):
print "text"
谢谢
os.path.isfile()采用文件路径(字符串),而不是文件描述符(数字),因此您的解决方案将无法按预期工作。
您可以改用os.isatty():
if os.isatty(1):
print "text"
os.isatty()
True
如果其参数是连接到终端的打开文件描述符,则将返回。
(顺便说一句,注意stdout
是文件描述符1
。stderr
是文件描述符2
)。
上面的答案对我不起作用。但也许这是 Python 2.x 中的一个错误:
https
://bugs.python.org/issue706263我使用的是 2.7。os.isatty(1) 始终返回 true,但 print 在 4k 字节后仍会引发异常。我正在使用 pythonw.exe 在后台运行脚本。