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 相关文章推荐
centos 下面安装python2.7 +pip +mysqld
Nov 18 Python
python冒泡排序简单实现方法
Jul 09 Python
Python随手笔记之标准类型内建函数
Dec 02 Python
Python算法应用实战之队列详解
Feb 04 Python
对Python进行数据分析_关于Package的安装问题
May 22 Python
举例讲解Python常用模块
Mar 08 Python
python3 selenium自动化测试 强大的CSS定位方法
Aug 23 Python
python使用协程实现并发操作的方法详解
Dec 27 Python
Selenium基于PIL实现拼接滚动截图
Apr 10 Python
matplotlib 对坐标的控制,加图例注释的操作
Apr 17 Python
python实现126邮箱发送邮件
May 20 Python
python datetime时间格式的相互转换问题
Jun 11 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给图片加文字水印
2015/07/31 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
WordPress中查询文章的循环Loop结构及用法分析
2015/12/17 PHP
php微信公众号开发之简答题
2018/10/20 PHP
Extjs学习笔记之六 面版
2010/01/08 Javascript
JavaScript toFixed() 方法
2010/04/15 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
JS中的BOM应用
2018/02/02 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
js实现双色球效果
2020/08/02 Javascript
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
python统计日志ip访问数的方法
2015/07/06 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
PyQt5主窗口动态加载Widget实例代码
2018/02/07 Python
使用memory_profiler监测python代码运行时内存消耗方法
2018/12/03 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
django框架中间件原理与用法详解
2019/12/10 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
Python 批量读取文件中指定字符的实现
2020/03/06 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
UNIX命令速查表
2012/03/10 面试题
《雨霖铃》教学反思
2014/02/22 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
承诺函范文
2015/01/21 职场文书
小学语文的各类谚语(70首)
2019/08/15 职场文书