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 相关文章推荐
Windows系统下使用flup搭建Nginx和Python环境的方法
Dec 25 Python
go和python变量赋值遇到的一个问题
Aug 31 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
Python实现判断并移除列表指定位置元素的方法
Apr 13 Python
ubuntu上安装python的实例方法
Sep 30 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
Oct 09 Python
Python3常用内置方法代码实例
Nov 18 Python
Tensorflow实现多GPU并行方式
Feb 03 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
Mar 16 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
May 15 Python
使用pycharm和pylint检查python代码规范操作
Jun 09 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
图书管理程序(三)
2006/10/09 PHP
php模板中出现空行解决方法
2011/03/08 PHP
PHPMailer发送邮件
2016/12/28 PHP
js类 from qq
2006/11/13 Javascript
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
基于Bootstrap下拉框插件bootstrap-select使用方法详解
2018/08/07 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
python操作MySQL数据库的方法分享
2012/05/29 Python
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
HTML5+CSS3绘制锯齿状的矩形
2016/03/01 HTML / CSS
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
Backcountry旗下的户外商品闪购网站:steep&cheap
2016/09/22 全球购物
荷兰本土平价百货:HEMA
2017/10/23 全球购物
abstract class和interface有什么区别?
2012/01/03 面试题
入党积极分子思想汇报
2014/01/02 职场文书
25岁生日感言
2014/01/13 职场文书
Python实现socket库网络通信套接字
2021/06/04 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python
springboot 全局异常处理和统一响应对象的处理方式
2022/06/28 Java/Android
如何解决flex文本溢出问题小结
2022/07/15 HTML / CSS