> 文档中心 > Python零基础入门篇 - 50 - Python中的 sys 模块

Python零基础入门篇 - 50 - Python中的 sys 模块


万叶集
🎉 隐约雷鸣 🎉 阴霾天空 🎉
🎉 但盼风雨来 🎉 能留你在此 🎉

前言
✌ 作者简介:渴望力量的哈士奇,大家可以叫我 🐶哈士奇🐶 。(我真的有一只哈士奇)
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬
🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦


📕 系列专栏:
               👍 Python全栈系列 - [更新中]     【 本文在该系列】
               👋 网安之路系列
​                       🍋 网安之路踩坑篇
​                       🍋 网安知识扫盲篇
​                       🍋 Vulhub 漏洞复现篇
​                       🍋 Shell脚本编程篇
​                       🍋 Web攻防篇   2021年9月3日停止更新,转战先知等安全社区
​                       🍋 渗透工具使用集锦  2021年9月3日停止更新,转战先知等安全社区
​                ⭐️ 点点点工程师系列
​                       🍹 测试神器 - Charles 篇
​                       🍹 测试神器 - Fiddler 篇
​                       🍹 测试神器 - Jmeter 篇
​                       🍹 自动化 - RobotFrameWork 系列
​                       🍹 自动化 - 基于 JAVA 实现的WEB端UI自动化
                       🍹 自动化 - 基于 MonkeyRunner 实现的APP端UI自动化

Python零基础入门篇 - 50 - Python中的 sys 模块 Python零基础入门篇 - 50 - Python中的 sys 模块

文章目录

    • sys 中的常用方法

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 sysmodules = sys.modules# 将 sys 模块的 modules 属性 赋值给 modules 并打印输出 Python启动时加载的模块集合print(modules)# sys.exit(0) # 取消注释该行代码,下方所有的代码将不再执行path = sys.pathprint(path)   # 将 sys 模块的 path 属性 赋值给 path 并打印输出 python 环境可以导入内置、第三方包与函数的所在路径code = sys.getdefaultencoding()     # 将 sys 模块 的 getdefaultencoding()函数 赋值给 code 并打印输出当前系统的编码[utf-8]print(code)# >>> 执行结果如下:# >>> utf-8print(sys.platform)  # 获取当前系统平台(如windows、Mac、linux)# >>> 执行结果如下:# >>> darwinprint(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 sysprint(sys.argv)# >>> 执行结果如下:# >>> ['/Users/username/PycharmProjects/XXXXX/XXXXX/animal/package_sys.py']# >>> 从执行结果可以看出 其输出的就是当前路径下的当前脚本本身,也就可以理解为 'sys.argv' 其实就是运行自身的脚本文件 # >>> 我们从 '外部' 运行该脚本文件的时候,需要传入参数(可以是多个)

接下来我们将上面的代码改为如下:

import sysprint(sys.argv[0], sys.argv[1])# >>> 接下来我们进入 Terminal 终端 利用 python 执行 该脚本文件,并传入 测试参数,结果如下图。


为了更好的 演示 sys.argv 属性,我们将上文演示的 sys 常用的函数与属性进行一下修改。示例如下:

import syscommand = 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 终端 执行该脚本,如下图: