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 19 Python
Python随机函数random()使用方法小结
Apr 29 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
May 16 Python
python定向爬虫校园论坛帖子信息
Jul 23 Python
浅谈关于Python3中venv虚拟环境
Aug 01 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
浅谈Python批处理文件夹中的txt文件
Mar 11 Python
详解使用python绘制混淆矩阵(confusion_matrix)
Jul 14 Python
django 信号调度机制详解
Jul 19 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
May 08 Python
Keras多线程机制与flask多线程冲突的解决方案
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
博士208HAF收音机实习报告
2021/03/02 无线电
玩转虚拟域名◎+ .
2006/10/09 PHP
php SQL防注入代码集合
2008/04/25 PHP
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
学习JavaScript的最佳方法分享
2011/10/21 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
nodeJS实现简单网页爬虫功能的实例(分享)
2017/06/08 NodeJs
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
2019/03/14 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
详解react组件通讯方式(多种)
2020/05/06 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
python字符串中的单双引
2017/02/16 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
python 实现两个线程交替执行
2020/05/02 Python
Python实现数字的格式化输出
2020/08/01 Python
致短跑运动员广播稿
2014/01/09 职场文书
学生党员思想汇报范文
2014/01/09 职场文书
孝老爱亲模范事迹
2014/01/24 职场文书
国贸专业的职业规划书
2014/03/15 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
Nginx实现会话保持的两种方式
2022/03/18 Servers
VMware虚拟机安装 Windows Server 2022的详细图文教程
2022/09/23 Servers
使用CSS实现音波加载效果
2023/05/07 HTML / CSS
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android