Python是否定义了平台函数“可用性”的正式行为

xdnvmnnf  于 2023-01-03  发布在  Python
关注(0)|答案(1)|浏览(122)

我正在创建跨平台的Python应用程序,所以我需要注意与平台可用性相关的官方声明,例如:
操作系统.getlogin()
...

可用性:Unix,Windows,不是Emscripten,不是WASI。

不幸的是,我不能弄清楚什么是“不可用”的程序行为的广泛光谱的函数(不仅getlogin())。
1.是否有一些标准的例外来区分“不可用”的情况?
1.始终使用try...except StandardError Package 调用以提供故障转移是否足够?
1.我是否需要用try隐藏import,或者对于函数调用来说已经足够了?换句话说:

try:
    import os
    os.getlogin()
    ...
except StandardError: # platform doesn't support user recognition
    ...

对比分析

import os
try:
    os.getlogin()
    ...
except StandardError: # platform doesn't support user recognition
    ...
ar7v8xwq

ar7v8xwq1#

您只会得到一个AttributeError。例如,在MacOS上(set_handle_inheritable仅在Windows上可用):

>>> os.get_handle_inheritable
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'os' has no attribute 'get_handle_inheritable'

因此,您可以:

  • 只需import os并在每次使用前检查操作系统
  • 尝试导入各个方法并捕获ImportError
  • 尝试调用函数并捕获AttributeError

相关问题