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中的单行、多行、中文注释方法
Jul 19 Python
浅谈python中真正关闭socket的方法
Dec 18 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 Python
python实现拉普拉斯特征图降维示例
Nov 25 Python
python类中super() 的使用解析
Dec 19 Python
基于python和flask实现http接口过程解析
Jun 15 Python
没编程基础可以学python吗
Jun 17 Python
Python rabbitMQ如何实现生产消费者模式
Aug 24 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
Nov 06 Python
python 实现两个变量值进行交换的n种操作
Jun 02 Python
Python 数据结构之十大经典排序算法一文通关
Oct 16 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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
JavaScript的面向对象(二)
2006/11/09 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
jQuery菜单插件用法实例
2015/07/25 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
简明 Python 基础学习教程
2007/02/08 Python
python中的字典使用分享
2016/07/31 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
2019/12/19 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
Python中SQLite如何使用
2020/05/27 Python
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
HTML5 visibilityState属性详细介绍和使用实例
2014/05/03 HTML / CSS
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
单位实习证明怎么写
2014/01/17 职场文书
高中学生干部学习的自我评价
2014/02/21 职场文书
教师党员公开承诺书
2014/03/25 职场文书
媒矿安全生产承诺书
2014/05/23 职场文书
会计学专业求职信
2014/07/17 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
校园广播稿范文
2015/08/19 职场文书
golang import自定义包方式
2021/04/29 Golang
Python 如何安装Selenium
2021/05/06 Python
详解OpenCV曝光融合
2022/04/29 Python
oracle数据库去除重复数据
2022/05/20 Oracle