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 过滤字符串的技巧,map与itertools.imap
Sep 06 Python
用python实现面向对像的ASP程序实例
Nov 10 Python
Python中map和列表推导效率比较实例分析
Jun 17 Python
python基础之入门必看操作
Jul 26 Python
浅谈Python黑帽子取代netcat
Feb 10 Python
Python使用progressbar模块实现的显示进度条功能
May 31 Python
Python批量删除只保留最近几天table的代码实例
Apr 01 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
浅谈Pytorch torch.optim优化器个性化的使用
Feb 20 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
Jul 13 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
Nov 02 Python
教你怎么用Python操作MySql数据库
May 31 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
2013/02/22 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
js动态获取子复选项并设计全选及提交的实现方法
2016/06/24 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
BACKBONE.JS 简单入门范例
2017/10/17 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
swiper 自动图片无限轮播实现代码
2018/05/21 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
2020/09/17 Javascript
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
用Python的Django框架编写从Google Adsense中获得报表的应用
2015/04/17 Python
PyQt5 实现给窗口设置背景图片的方法
2019/06/13 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
Python爬虫开发与项目实战
2020/12/16 Python
Levi’s美国官网:美国著名的牛仔裤品牌
2016/08/19 全球购物
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
TIME时代杂志台湾总代理:台时亚洲
2018/10/22 全球购物
印度首个本地在线平台:nearbuy
2019/03/28 全球购物
初级职称评定工作总结
2015/08/13 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
世界文化遗产导游词
2019/08/07 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
浅谈python中的多态
2021/06/15 Python
Python实现抖音热搜定时爬取功能
2022/03/16 Python