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读文件逐行处理的示例代码分享
Dec 27 Python
Python实现XML文件解析的示例代码
Feb 05 Python
将python代码和注释分离的方法
Apr 21 Python
python实现图片文件批量重命名
Mar 23 Python
numpy给array增加维度np.newaxis的实例
Nov 01 Python
对python requests发送json格式数据的实例详解
Dec 19 Python
Python3实现对列表按元组指定列进行排序的方法分析
Dec 22 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
May 15 Python
关于Pytorch MaxUnpool2d中size操作方式
Jan 03 Python
pytorch+lstm实现的pos示例
Jan 14 Python
flask项目集成swagger的方法
Dec 09 Python
Python趣味挑战之实现简易版音乐播放器
May 28 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 时间转换Unix时间戳代码
2010/01/22 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
2015/12/19 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
PHP编程实现脚本异步执行的方法
2017/08/09 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
JS DOM 操作实现代码
2010/08/01 Javascript
js和html5实现手机端刮刮卡抽奖效果完美兼容android/IOS
2013/11/18 Javascript
JQuery实现动态表格点击按钮表格增加一行
2014/08/24 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
VUE中使用MUI方法
2019/02/12 Javascript
Node 代理访问的实现
2019/09/19 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
easy_install python包安装管理工具介绍
2013/02/10 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
详解Python进程间通信之命名管道
2017/08/28 Python
简单了解OpenCV是个什么东西
2017/11/10 Python
详解程序意外中断自动重启shell脚本(以Python为例)
2019/07/26 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
Python+unittest+DDT实现数据驱动测试
2020/11/30 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
亚马逊印度站:Amazon.in
2017/10/15 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
地理科学专业自荐信
2014/09/01 职场文书
借名购房协议书范本
2014/10/06 职场文书
入伍通知书
2015/04/23 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL