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单链表简单实现代码
Apr 27 Python
Python实现视频下载功能
Mar 14 Python
简单谈谈python中的语句和语法
Aug 10 Python
Python字符串和字典相关操作的实例详解
Sep 23 Python
Python实现多进程共享数据的方法分析
Dec 04 Python
Python学习之Anaconda的使用与配置方法
Jan 04 Python
Python读取指定日期邮件的实例
Feb 01 Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 Python
Python pip安装模块提示错误解决方案
May 22 Python
如何用用Python将地址标记在地图上
Feb 07 Python
宝塔更新Python及Flask项目的部署
Apr 11 Python
如何利用python创作字符画
Jun 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
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
PHP.MVC的模板标签系统(一)
2006/09/05 PHP
常用的php对象类型判断
2008/08/27 PHP
PHP 文件缓存的性能测试
2010/04/25 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
js cookies实现简单统计访问次数
2009/11/24 Javascript
Javascript学习笔记9 prototype封装继承
2010/01/11 Javascript
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
微信小程序开发之自定义tabBar的实现
2018/09/06 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
举例讲解Python中is和id的用法
2015/04/03 Python
Python连接DB2数据库
2016/08/27 Python
pandas数据集的端到端处理
2019/02/18 Python
python日志模块logbook使用方法
2019/09/19 Python
python3多线程知识点总结
2019/09/26 Python
Python操作SQLite/MySQL/LMDB数据库的方法
2019/11/07 Python
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
自行车租赁公司创业计划书
2014/01/28 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
客房领班岗位职责
2015/02/11 职场文书
中秋节随笔
2015/08/15 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书