如何检查给定的文件描述符是否有效?如果fd=3
可用,我想写入它;否则,我想写到标准输出。我知道可以在每个os.write
调用上包装try-except语句,但我希望事先知道fd=3
是否可写。
如何检查给定的文件描述符是否有效?如果fd=3
可用,我想写入它;否则,我想写到标准输出。我知道可以在每个os.write
调用上包装try-except语句,但我希望事先知道fd=3
是否可写。
os.fstat
来确定每次写入之前文件描述符是否有效,但是由于无效的文件描述符会引发OSError
异常,因此你仍需要使用try/except语句进行包装。你可能最好还是创建自己的写入函数,并加上try/except语句。def write(data, fd=3):
try:
os.write(fd, data)
except OSError:
sys.stdout.write(data)
os.write
写入fd=3
(在try
-except
块内),并根据其成功与否更改所有后续行为呢?try
-except
。当然,如果在问题解决过程中fd=3
不再有效(例如,如果它是从另一端关闭的管道),则此方法将失效。
os.fstat
并检查模式位,而不是使用os.write
,以避免向文件描述符写入垃圾数据的副作用。但除此之外,确实,使用try/except是解决这个问题的完美习语。"宁愿请求原谅等等" - Chris Farmiloeos.fstat
能检测到一个断开的管道吗? - NPEValueError
错误,我相信。 - Chris Farmiloe