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中with语句的用法
Apr 15 Python
python获取一组汉字拼音首字母的方法
Jul 01 Python
详解python string类型 bytes类型 bytearray类型
Dec 16 Python
浅谈Pandas 排序之后索引的问题
Jun 07 Python
Python嵌套列表转一维的方法(压平嵌套列表)
Jul 03 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
Django Celery异步任务队列的实现
Jul 24 Python
Python 点击指定位置验证码破解的实现代码
Sep 11 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
Sep 11 Python
Python基于百度AI实现OCR文字识别
Apr 02 Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 Python
python中K-means算法基础知识点
Jan 25 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
用Apache反向代理设置对外的WWW和文件服务器
2006/10/09 PHP
PHP 编程请选择正确的文本编辑软件
2006/12/21 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
js+html+css实现鼠标移动div实例
2013/01/30 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
2016/03/17 Javascript
JavaScript实现自定义媒体播放器方法介绍
2017/01/03 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
2017/01/22 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
通过vue-cli3构建一个SSR应用程序的方法
2018/09/13 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
2019/04/17 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
给Python初学者的一些编程技巧
2015/04/03 Python
Python 基础知识之字符串处理
2017/01/06 Python
python实现QQ邮箱/163邮箱的邮件发送
2019/01/22 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
2020/03/16 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
Internet体系结构
2014/12/21 面试题
编辑硕士自荐信范文
2013/11/27 职场文书
大学生村官工作感言
2014/01/10 职场文书
干部鉴定材料
2014/05/18 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
2014年重阳节活动策划方案书
2014/09/16 职场文书
离婚协议书的范本
2015/01/27 职场文书
董存瑞观后感
2015/06/11 职场文书
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL