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


Posted in Python onJanuary 22, 2015

代码实例:

try:

    import termios, TERMIOS





 1

except ImportError:

    try:

        import msvcrt








2

    except ImportError:

        try:

            from EasyDialogs import AskPassword
 3

        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 相关文章推荐
Python通过poll实现异步IO的方法
Jun 04 Python
Python下的常用下载安装工具pip的安装方法
Nov 13 Python
Python中操作mysql的pymysql模块详解
Sep 13 Python
python下读取公私钥做加解密实例详解
Mar 29 Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 Python
对pandas的层次索引与取值的新方法详解
Nov 06 Python
Python中一般处理中文的几种方法
Mar 06 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
Jul 17 Python
在Django下测试与调试REST API的方法详解
Aug 29 Python
Python字节单位转换实例
Dec 05 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
Dec 17 Python
python3实现常见的排序算法(示例代码)
Jul 04 Python
Python实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 #Python
python中实现php的var_dump函数功能
Jan 21 #Python
Python实现获取网站PR及百度权重
Jan 21 #Python
Python实现抓取页面上链接的简单爬虫分享
Jan 21 #Python
Python中多线程及程序锁浅析
Jan 21 #Python
Python实现的多线程端口扫描工具分享
Jan 21 #Python
Python中的pprint折腾记
Jan 21 #Python
You might like
详解PHP队列的实现
2019/03/14 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
2016/04/19 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
JavaScript中附件预览功能实现详解(推荐)
2017/08/15 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
CentOS7中源码编译安装NodeJS的完整步骤
2018/10/13 NodeJs
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
2019/08/09 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
Python 从attribute到property详解
2020/03/05 Python
Python正则表达式如何匹配中文
2020/05/27 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
英国景点门票网站:attractiontix
2019/08/27 全球购物
vue+django实现下载文件的示例
2021/03/24 Vue.js
工作人员思想汇报
2014/01/09 职场文书
幼儿园亲子活动总结
2014/04/26 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
物业保洁员岗位职责
2015/02/13 职场文书
工会积极分子个人总结
2015/03/03 职场文书