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
投稿

猜你喜欢

  • Python中SOAP项目的介绍及其在web开发中的应用

    2022-09-15 15:36:45
  • 减少用户的思考

    2010-09-07 12:14:00
  • 6个asp判断函数使用方法介绍

    2007-09-24 13:10:00
  • 哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程

    2022-02-23 04:17:19
  • Ext2.0.2经典的一个JS组件(带EXT中文手册)

    2009-04-13 12:24:00
  • python实现logistic分类算法代码

    2021-12-24 14:19:15
  • 在js中的replace方法详解

    2007-08-21 15:47:00
  • Python赋值逻辑的实现

    2023-09-14 21:20:27
  • Python调用系统命令os.system()和os.popen()的实现

    2021-06-27 23:56:29
  • 再论Javascript下字符串连接的性能

    2010-06-26 13:13:00
  • python实现域名系统(DNS)正向查询的方法

    2021-03-26 17:20:57
  • php设计模式之正面模式实例分析【星际争霸游戏案例】

    2023-11-14 10:54:04
  • python实现ip地址查询经纬度定位详解

    2021-09-13 08:01:52
  • phpMyAdmin开发人员访谈——4个人支持整个项目

    2010-05-26 15:34:00
  • Python+Pygame实现神庙逃亡游戏

    2022-06-12 16:26:28
  • 网页布局设计基础

    2008-10-16 13:58:00
  • Python Pandas学习之基本数据操作详解

    2021-11-07 17:46:56
  • 利用Python如何实现一个小说网站雏形

    2023-09-22 05:52:07
  • 使用mysqli完成事务处理

    2011-03-29 15:49:00
  • python斯皮尔曼spearman相关性分析实例

    2021-04-13 00:53:13
  • asp之家 网络编程 m.aspxhome.com