5

我理解为什么在没有控制台的情况下打印时出现“错误的文件描述符”错误:为什么在进行打印语句时出现 IOError: (9, 'Bad file descriptor') 错误?.

我的问题是,如何检测标准输出是否可用?我可以简单地做这样的事情:

if os.path.isfile(2):
   print "text"

谢谢

4

2 回答 2

8

os.path.isfile()采用文件路径(字符串),而不是文件描述符(数字),因此您的解决方案将无法按预期工作。

您可以改用os.isatty()

if os.isatty(1):
    print "text"

os.isatty()True如果其参数是连接到终端的打开文件描述符,则将返回。

(顺便说一句,注意stdout是文件描述符1stderr是文件描述符2)。

于 2013-09-04T13:31:12.610 回答
0

上面的答案对我不起作用。但也许这是 Python 2.x 中的一个错误:

https

://bugs.python.org/issue706263我使用的是 2.7。os.isatty(1) 始终返回 true,但 print 在 4k 字节后仍会引发异常。我正在使用 pythonw.exe 在后台运行脚本。

于 2016-03-11T13:36:41.840 回答