Python中使用异常处理来判断运行的操作系统平台方法

作者:junjie 时间:2021-03-28 07:37:23 

代码实例:


try:
    import termios, TERMIOS 1
except ImportError:
    try:
        import msvcrt2
    except ImportError:
        try:
            from EasyDialogs import AskPassword3
        except ImportError:
            getpass = "default_getpass" 4
        else:
            getpass = "AskPassword"5
    else:
        getpass = "win_getpass"
else:
    getpass = "unix_getpass"

1:termios 是 UNIX 独有的一个模块,它提供了对于输入终端的底层控制。如果这个模块无效 (因为它不在你的系统上,或你的系统不支持它),则导入失败,Python 引发我们捕捉的 ImportError 异常。

2:OK,我们没有 termios,所以让我们试试 msvcrt,它是 Windows 独有的一个模块,可以提供在 Microsoft Visual C++ 运行服务中的许多有用的函数的一个API。如果导入失败,Python 会引发我们捕捉的 ImportError 异常。

3:如果前两个不能工作,我们试着从 EasyDialogs 导入一个函数,它是 Mac OS 独有的一个模块,提供了各种各样类型的弹出对话框。再一次,如果导入失败,Python 会引发一个我们捕捉的 ImportError 异常。

4:这些平台特定的模块没有一个有效 (有可能,因为 Python 已经移植到了许多不同的平台上了),所以我们需要回头使用一个缺省口令输入函数 (这个函数定义在 getpass 模块中的别的地方)。注意我们在这里所做的:我们将函数 default_getpass 赋给变量 getpass。如果你读了官方 getpass 文档,它会告诉你 getpass 模块定义了一个 getpass 函数。它是这样做的:通过绑定 getpass 到正确的函数来适应你的平台。然后当你调用 getpass 函数时,你实际上调用了平台特定的函数,是这段代码已经为你设置好的。你不需要知道或关心你的代码正运行在何种平台上;只要调用 getpass,则它总能正确处理。

5:一个 try...except 块可以有一条 else 子句,就像 if 语句。如果在 try 块中没有异常引发,然后 else 子句被执行。在本例中,那就意味着如果 from EasyDialogs import AskPassword 导入可工作,所以我们应该绑定 getpass 到 AskPassword 函数。其它每个 try...except 块有着相似的 else 子句,当我们发现一个 import 可用时,就绑定 getpass 到适合的函数。

标签:Python,异常处理,判断,操作系统
0
投稿

猜你喜欢

  • Vue2.0在IE11版本浏览器中的兼容性问题

    2024-04-29 13:08:55
  • mysql 8.0.16 压缩包安装配置方法图文教程

    2024-01-14 13:06:39
  • EXECUTE IMMEDIATE用法小结

    2009-09-26 18:32:00
  • 使用ASP脚本命令重新启动服务器

    2008-10-10 11:53:00
  • MySQL数据库root权限丢失解决方案

    2008-07-13 13:59:00
  • ADO.Net对oracle数据库操作的实例代码

    2024-01-18 02:00:41
  • Python获取运行目录与当前脚本目录的方法

    2023-12-19 13:17:59
  • 关注oblog 关注xml-rpc 自己开发客户端小记

    2009-10-04 20:27:00
  • sql中case语句的用法浅谈

    2024-01-28 07:52:37
  • 详解MySQL数据库之更新语句

    2010-08-08 09:15:00
  • Python多线程正确用法实例解析

    2022-03-22 14:31:58
  • react-native ListView下拉刷新上拉加载实现代码

    2023-07-02 06:35:34
  • Python实现递归遍历文件夹并删除文件

    2021-09-06 09:51:17
  • 妙用Dreamweaver MX共享Word XP文件

    2010-09-05 21:17:00
  • python标记语句块使用方法总结

    2023-09-23 20:16:22
  • 解析PHP观察者模式Observer

    2023-07-08 13:38:58
  • flask SQLAlchemy连接数据库及操作的实现

    2024-01-28 09:23:29
  • python异常处理之try finally不报错的原因

    2023-05-01 00:02:40
  • Django在Model保存前记录日志实例

    2023-10-05 03:01:29
  • python获取本机mac地址和ip地址的方法

    2023-02-25 00:38:16
  • asp之家 网络编程 m.aspxhome.com