Python中使用异常处理来判断运行的操作系统平台方法

 更新时间:2015年01月22日 12:02:50   投稿:junjie  
这篇文章主要介绍了Python中使用异常处理来判断运行的操作系统平台方法,这个方法比较新颖,,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

代码实例:

复制代码 代码如下:

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 到适合的函数。

相关文章

  • matlab绘制局部放大图图文教程

    matlab绘制局部放大图图文教程

    这篇文章主要给大家介绍了关于matlab绘制局部放大图的相关资料,所谓局部放大即呈现子图,以显示局部细节,需要的朋友可以参考下
    2023-07-07
  • Python基础之函数用法实例详解

    Python基础之函数用法实例详解

    这篇文章主要介绍了Python中函数用法,包括了函数的创建、定义、参数等,需要的朋友可以参考下
    2014-09-09
  • Python读写mat文件操作指南(使用scipy.io)

    Python读写mat文件操作指南(使用scipy.io)

    Matlab是一个非常好用的矩阵计算分析软件,然而随着深度学习的发展,Python语言也逐渐成为人们的常用编程语言,这篇文章主要给大家介绍了关于Python使用scipy.io读写mat文件的相关资料,需要的朋友可以参考下
    2023-06-06
  • python实现双链表

    python实现双链表

    这篇文章主要为大家详细介绍了python实现双链表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Pytorch pth 格式转ONNX 格式的详细过程

    Pytorch pth 格式转ONNX 格式的详细过程

    PyTorch 训练的模型,需要在Jetson nano 上部署,jetson 原生提供了TensorRT 的支持,所以一个比较好的方式是把它转换成ONNX 格式,然后在通过ONNX 转换成TensorRT 格式,这篇文章主要介绍了Pytorch pth 格式转ONNX 格式,需要的朋友可以参考下
    2023-05-05
  • pycharm内无法import已安装的模块问题解决

    pycharm内无法import已安装的模块问题解决

    今天小编就为大家分享一篇pycharm内无法import已安装的模块问题解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python中openpyxl和xlsxwriter对Excel的操作方法

    python中openpyxl和xlsxwriter对Excel的操作方法

    这篇文章主要介绍了python中openpyxl和xlsxwriter对Excel的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Python中的切片函数Slice详解

    Python中的切片函数Slice详解

    这篇文章主要介绍了Python中的切片函数Slice详解,切片是对有序的集合而言,意思从有序集合里提取数据构成子集集合,给定提取的起点start、终点end以及方向上的步长step,能否切出非空子集,起点start需能沿步长方向上到达终点,需要的朋友可以参考下
    2023-09-09
  • python迭代dict的key和value的方法

    python迭代dict的key和value的方法

    今天小编就为大家分享一篇python迭代dict的key和value的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python?FastAPI?Sanic?Tornado?与Golang?Gin性能实战对比

    Python?FastAPI?Sanic?Tornado?与Golang?Gin性能实战对比

    本文将深入比较Python的FastAPI、Sanic、Tornado以及Golang的Gin框架的各种特性、性能表现以及适用场景,通过详实的性能测试和实际示例代码,将探讨它们在构建现代高性能应用中的优劣势,以便开发者根据需求做出明智的选择
    2024-01-01

最新评论

?


http://www.vxiaotou.com