Python学习之sys模块使用教程详解
作者:渴望力量的哈士奇 发布时间:2021-03-31 01:38:50
sys模块 与 os包一样,也是对系统资源进行调用。功能同样也是非常丰富,接下来我们会对 sys模块的一些简单且常用的函数进行介绍,主要针对一些非功能性的函数与属性来认识一些不太常见的 Python 背后的事件。
sys 中的常用方法
函数名 | 参数 | 介绍 | 举例 | 返回值 |
---|---|---|---|---|
modules(属性) | 无 | 将Python启动时加载的模块集合起来并返回一个列表 | sys.modules | 列表 |
path(属性) | 无 | 返回当前Py的环境路径(当前py环境可以导入内置、第三方包与函数的所在路径) | sys.path | 列表 |
exit(函数) | arg | 退出程序(执行十行代码,若在第二行插入sys.exit,则后面的代码不会执行) | sys.exit(0) | 无 |
getdefaultencoding | 无 | 获取当前系统级别的编码格式(比如 utf-8) | sys.getdefaultencoding() | 字符串 |
platform(函数) | 无 | 获取当前系统平台(如windows、Mac、linux) | sys.platform() | 字符串 |
version(属性) | 无 | 获取当前 Python 的版本 | sys.version | 字符串 |
argv(属性) | *args | 获取程序外部的参数,返回值是一个列表,实际开发中很常用的一个功能 | sys.argv | 列表 |
示例如下:
import sys
modules = sys.modules # 将 sys 模块的 modules 属性 赋值给 modules 并打印输出 Python启动时加载的模块集合
print(modules)
# sys.exit(0) # 取消注释该行代码,下方所有的代码将不再执行
path = sys.path
print(path) # 将 sys 模块的 path 属性 赋值给 path 并打印输出 python 环境可以导入内置、第三方包与函数的所在路径
code = sys.getdefaultencoding() # 将 sys 模块 的 getdefaultencoding()函数 赋值给 code 并打印输出当前系统的编码[utf-8]
print(code)
# >>> 执行结果如下:
# >>> utf-8
print(sys.platform) # 获取当前系统平台(如windows、Mac、linux)
# >>> 执行结果如下:
# >>> darwin
print(sys.version) # 获取当前 Python 的版本
# >>> 执行结果如下:
# >>> 3.8.7 (v3.8.7:6503f05dd5, Dec 21 2020, 12:45:15)
# >>> [Clang 6.0 (clang-600.0.57)]
接下来的 sys.argv 可要好好说一说了。上文我们提到 argv 是获取程序外部的参数,返回值是一个列表。
说实话我一直在 python 解释器、idea 运行,试图从结果发现它的用途,然而结果一直都是没结果,也在网上查了许多资料,大部分都是转裁和复制的。给的都是简明python教程上那个一长串代码的例子,说看了就明白了,可我看得晕头转向的还是没真正明白,只知道 sys.argv[0] 表示当前脚本本身文件路径的该脚本文件。后来经过大量努力,多方求教才真正明悟了,谨以记录和分享,希望能从另一个角度给同在求索过程中的同学一点启发。
sys.argv 其实就是一个从程序外部获取参数 的桥梁,这里所说的 外部 很关键,所以那些试图从代码来说明它作用的解释一直没看明白。因为我们需要先在终端执行脚本, 并从外部传入参数(可以是多个),所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一个列表,所以才能用[ ]提取其中的元素。其第一个元素是程序本身,随后才依次是外部传入的参数。
我们先来看一下 sys.argv 返回的是什么?
import sys
print(sys.argv)
# >>> 执行结果如下:
# >>> ['/Users/username/PycharmProjects/XXXXX/XXXXX/animal/package_sys.py']
# >>> 从执行结果可以看出 其输出的就是当前路径下的当前脚本本身,也就可以理解为 'sys.argv' 其实就是运行自身的脚本文件
# >>> 我们从 '外部' 运行该脚本文件的时候,需要传入参数(可以是多个)
接下来我们将上面的代码改为如下:
import sys
print(sys.argv[0], sys.argv[1])
# >>> 接下来我们进入 Terminal 终端 利用 python 执行 该脚本文件,并传入 测试参数,结果如下图。
为了更好的 演示 sys.argv 属性,我们将上文演示的 sys 常用的函数与属性进行一下修改。示例如下:
import sys
command = sys.argv[1]
if command == 'modules':
modules = sys.modules
print(modules)
elif command == 'path':
path = sys.path
print(path)
elif command == 'encoding':
code = sys.getdefaultencoding()
print(code)
elif command == 'platform':
print(sys.platform)
elif command == 'version':
print(sys.version)
else:
print('该命令未识别')
然后在 Terminal 终端 执行该脚本,如下图:
来源:https://blog.csdn.net/weixin_42250835/article/details/123649719


猜你喜欢
- [摘要]了解如何充分利用SQL Server 2000的全文搜索功能。本文包含有关实现最大吞吐量和最佳性能的几点提示和技
- 在本教程中,你会学到如何把HTML的列表项(li元素)转换成下图的“便签墙”。该效果分5步实现。内核为webkit的Safari和Chrom
- 本文实例讲述了python类和继承定义与用法。分享给大家供大家参考。具体如下:class Employee: passlee =
- 一、简介Supervisor 是一款 Python 开发的进程管理系统,允许用户监视和控制 Linux 上的进程,能将一个普通命令行进程变为
- 找到给定二叉树的最小深度最小深度是从根节点到最近叶子节点的最短路径上的节点数量注意:叶子节点没有子树Example:Given binary
- 本文实例讲述了js对象基础用法。分享给大家供大家参考。具体分析如下:js对象在本质上与数组相同,都是存放一组数据。但创建方法有所不同,对象需
- 一、简介 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装pyt
- sql代码如下:CREATE PROCEDURE Proname //使用CREATE PROCED
- 上篇文章介绍了ROS TF坐标变换基本概念及使用案例,今天给大家介绍ROS机器人底盘坐标像素变换,一起看看吧对于ROS
- 1.在vue项目根目录下新建vue.config.js(不是在src下面)vue.config.js配置文件:module.exports
- TEMPLATESDjango 1.8的新特性一个列表,包含所有在Django中使用的模板引擎的设置。列表中的每一项都是一个字典,包含某个引
- 图形化验证码生成和验证功能介绍在使用用户名和密码登录功能时,需要填写验证码,验证码是以图形化的方式进行获取和展示的。验证码使用原理验证码的使
- <!doctype html><html><head><meta http-equiv
- 系列文章:PyQt5使用mimeData实现拖拽事件教程示例解析上实现思路1、简要介绍QMimeData2、QMimeData的用例1:在Q
- 1.VsCode官方插件地址:https://marketplace.visualstudio.com/vscodehttp://code.
- 分享人:轻侯设计师常有这样的疑惑:如何知道用户浏览网页的习惯?如何设计出符合用户使用习惯的网页?如何从搜索引擎带来更多的流量?眼动研究可以帮
- 笔者需要tensorflow仅运行在一个GPU上(机器本身有多GPU),而且需要依据系统参数动态调节,故无法简单使用CUDA_VISIBLE
- 匿名管道管道是一个单向通道,有点类似共享内存缓存.管道有两端,包括输入端和输出端.对于一个进程的而言,它只能看到管道一端,即要么是输入端要么
- 自动发送邮件我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的报表,这个时候可以考虑借助Pyth
- 错误重现:首先在控制面板里卸载了sqlserver软件,一切正常,然后重启(一定要重启,否则没法重装),执行sqlserver的安装程序,一