print:“IOError:[Errno 9]错误的文件描述符”

时间:2013-09-04 13:25:25

标签: python

我理解为什么我会得到"错误的文件描述符"此帖子中没有控制台打印时出错:why am I getting IOError: (9, 'Bad file descriptor') error while making print statements?

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

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

由于

2 个答案:

答案 0 :(得分:8)

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

您可以改为使用os.isatty()

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

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

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

答案 1 :(得分:0)

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

http://jsfiddle.net/dmitriy_nevzorov/fy31qobe/3/

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