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 24 Python
Python实现发送email的几种常用方法
Aug 18 Python
python实现颜色空间转换程序(Tkinter)
Dec 31 Python
用tensorflow搭建CNN的方法
Mar 05 Python
python实现翻转棋游戏(othello)
Jul 29 Python
Python多线程正确用法实例解析
May 30 Python
Python while true实现爬虫定时任务
Jun 08 Python
Python实现快速大文件比较代码解析
Sep 04 Python
Django实现文章详情页面跳转代码实例
Sep 16 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 Python
Python self用法详解
Nov 28 Python
python批量提取图片信息并保存的实现
Feb 05 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中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
2019/05/12 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
python实现获取序列中最小的几个元素
2014/09/25 Python
解密Python中的描述符(descriptor)
2015/06/03 Python
八大排序算法的Python实现
2021/01/28 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
详解Python的三种拷贝方式
2020/02/11 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
2020/03/13 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
德国运动鞋网上商店:Afew Store
2018/01/05 全球购物
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
澳大利亚汽车零部件、音响及配件超市:Automotive Superstore
2018/06/19 全球购物
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
工程现场管理求职自荐信
2013/10/02 职场文书
物业公司采购员岗位职责
2013/12/31 职场文书
中学生打架检讨书
2014/02/10 职场文书
小松树教学反思
2014/02/11 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
2021/05/25 MySQL
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
JavaScript圣杯布局与双飞翼布局实现案例详解
2022/08/05 Javascript