如何检查给定的文件描述符是否有效?我想写fd=3
如果有的话;否则,我想写信给stdout。我知道我可以使用try-except语句包装每个os.write
调用,但我想提前知道fd=3
是否可写。
答案 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
块内)尝试try
到except
,并根据成功更改所有后续行为?
这样您就不必在try
- except
中打包每个电话。当然,如果fd=3
在您的问题中间停止有效(例如,如果它是从另一端关闭的管道),这将会中断。