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实现生成简单的Makefile文件代码示例
Mar 10 Python
Python检测一个对象是否为字符串类的方法
May 21 Python
Python判断某个用户对某个文件的权限
Oct 13 Python
Python中文件的读取和写入操作
Apr 27 Python
如何在python字符串中输入纯粹的{}
Aug 22 Python
python定时按日期备份MySQL数据并压缩
Apr 19 Python
Pandas之ReIndex重新索引的实现
Jun 25 Python
Python list运算操作代码实例解析
Jan 20 Python
python连接打印机实现打印文档、图片、pdf文件等功能
Feb 07 Python
解决python 找不到module的问题
Feb 12 Python
jupyter实现重新加载模块
Apr 16 Python
Pycharm自带Git实现版本管理的方法步骤
Sep 18 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+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
php强制运行广告的方法
2014/12/01 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
WordPress JQuery处理沙发头像
2009/06/22 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
Vue实现按钮旋转和移动位置的实例代码
2018/08/09 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
python基础教程之缩进介绍
2014/08/29 Python
python获取各操作系统硬件信息的方法
2015/06/03 Python
Python3实现定时任务的四种方式
2019/06/03 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
python实现ping命令小程序
2020/12/28 Python
HTML5 本地存储实现购物车功能
2017/09/07 HTML / CSS
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
服装行业创业计划书范文
2014/02/05 职场文书
《观舞记》教学反思
2014/04/16 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
怎样写好工作计划
2019/04/10 职场文书