检查文件描述符是否有效

时间:2011-08-02 17:29:30

标签: python python-2.6 file-descriptor

如何检查给定的文件描述符是否有效?我想写fd=3如果有的话;否则,我想写信给stdout。我知道我可以使用try-except语句包装每个os.write调用,但我想提前知道fd=3是否可写。

2 个答案:

答案 0 :(得分:7)

您可以使用os.fstat确定文件描述符在每次写入之前是否有效,但无论如何都需要将其包装在try / except中,因为无效的文件描述符将引发OSError。你最好只用try / except创建自己的写函数。

def write(data, fd=3):
    try:
        os.write(fd, data)
    except OSError:
        sys.stdout.write(data)

答案 1 :(得分:2)

如何在开始时(os.write - fd=3块内)尝试tryexcept,并根据成功更改所有后续行为?

这样您就不必在try - except中打包每个电话。当然,如果fd=3在您的问题中间停止有效(例如,如果它是从另一端关闭的管道),这将会中断。