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实现巡检系统(solaris)示例
Apr 02 Python
Linux下使用python调用top命令获得CPU利用率
Mar 10 Python
使用Python操作Elasticsearch数据索引的教程
Apr 08 Python
python3写爬取B站视频弹幕功能
Dec 22 Python
Python安装图文教程 Pycharm安装教程
Mar 27 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 Python
分享8点超级有用的Python编程建议(推荐)
Oct 13 Python
使用 Supervisor 监控 Python3 进程方式
Dec 05 Python
对pytorch的函数中的group参数的作用介绍
Feb 18 Python
python 在sql语句中使用%s,%d,%f说明
Jun 06 Python
如何把python项目部署到linux服务器
Aug 26 Python
详解python tkinter 图片插入问题
Sep 03 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为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
2015/11/21 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
基于jQuery实现选项卡效果
2017/01/04 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
Vue header组件开发详解
2018/01/26 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
JS实现动态无缝轮播
2020/01/11 Javascript
vue实现扫码功能
2020/01/17 Javascript
在Uni中使用Vue的EventBus总线机制操作
2020/07/31 Javascript
Python OpenCV 直方图的计算与显示的方法示例
2018/02/08 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
在python中求分布函数相关的包实例
2020/04/15 Python
使用darknet框架的imagenet数据分类预训练操作
2020/07/07 Python
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
校三好学生主要事迹
2014/01/11 职场文书
工程售后服务方案
2014/06/08 职场文书
责任书格式
2015/01/29 职场文书
2015年采购工作总结
2015/04/10 职场文书
2015年检察院个人工作总结
2015/05/20 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
vue特效之翻牌动画
2022/04/20 Vue.js
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android