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中的对象,方法,类,实例,函数用法分析
Jan 15 Python
python爬取NUS-WIDE数据库图片
Oct 05 Python
itchat接口使用示例
Oct 23 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 Python
python将字典内容存入mysql实例代码
Jan 18 Python
PyCharm的设置方法和第一个Python程序的建立
Jan 16 Python
python opencv 批量改变图片的尺寸大小的方法
Jun 28 Python
Python学习笔记之函数的定义和作用域实例详解
Aug 13 Python
对tensorflow 中tile函数的使用详解
Feb 07 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 Python
python读取pdf格式文档的实现代码
Apr 01 Python
解决jupyter notebook图片显示模糊和保存清晰图片的操作
Apr 24 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 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
微信小程序开发之Tabbar实例详解
2017/01/09 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
如何在Vue.js中实现标签页组件详解
2019/01/02 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
vue ajax 拦截原理与实现方法示例
2019/11/29 Javascript
js实现烟花特效
2020/03/02 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
python检测某个变量是否有定义的方法
2015/05/20 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
python一键去抖音视频水印工具
2018/09/14 Python
python读取文件名并改名字的实例
2019/01/07 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
调试Django时打印SQL语句的日志代码实例
2019/09/12 Python
keras实现多种分类网络的方式
2020/06/11 Python
浅谈python出错时traceback的解读
2020/07/15 Python
Python colormap库的安装和使用详情
2020/10/06 Python
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
法律系毕业生自荐信范文
2014/03/27 职场文书
预防煤气中毒方案
2014/06/16 职场文书
质量保证书格式模板
2015/02/27 职场文书
会计求职自荐信
2015/03/26 职场文书
2015年除四害工作总结
2015/07/23 职场文书
关于做家务的心得体会
2016/01/23 职场文书