我理解为什么我在没有控制台的情况下从下面的文章中得到“坏文件描述符”错误:why am I getting IOError: (9, 'Bad file descriptor') error while making print statements?。
我的问题是,如何检测stdout是否可用?我可以这样做吗?
if os.path.isfile(2):
print "text"谢谢
发布于 2013-09-04 13:31:12
os.path.isfile()采用文件路径(字符串),而不是文件描述符(数字),因此您的解决方案不会像您预期的那样工作。
您可以使用os.isatty()代替:
if os.isatty(1):
print "text"如果os.isatty()的参数是连接到终端的打开文件描述符,则它将返回True。
(顺便指出,stdout是文件描述符1。stderr是文件描述符2)。
发布于 2016-03-11 13:36:41
以上的答案对我没有用。但是,这可能是Python2.x中的一个bug:
https://bugs.python.org/issue706263
我正在用2.7。os.isatty(1)总是返回true,但是print在4k字节后仍然引发异常。我正在使用pythonw.exe在后台运行一个脚本。
https://stackoverflow.com/questions/18615130
复制相似问题