打印输出:"IOError: [Errno 9] Bad file descriptor"

5

1
你不是可以将 print 放在 try ... except 中吗? - kqr
当然。我已经考虑过了。我知道有不同的思路,但是我更喜欢在我的操作中明确一些。也就是说,在我出错时寻找异常并捕获它们。 - Doo Dah
2个回答

8

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

你可以使用 os.isatty() 代替:

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

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

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


0
上面的答案对我没用。但也许这是 Python 2.x 的一个 bug:

https://bugs.python.org/issue706263

我正在使用 2.7 版本。os.isatty(1) 总是返回 true,但在输出 4k 字节后 print 仍会引发异常。我正在使用 pythonw.exe 在后台运行脚本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接