首页 > 编程语言 >python模块之sys

python模块之sys

时间:2022-12-03 15:46:24浏览次数:58  
标签:解释器 python argv sys Python 模块 属性

1. 简介

“sys”即“system”,“系统”之意。该模块提供了一些接口,用于访问 Python 解释器自身使用和维护的变量,同时模块中还提供了一部分函数,可以与解释器进行比较深度的交互。

2. 变量和函数

sys模块常用的变量和函数及其功能见下表:

  1. sys.argv 获取运行Python程序的命令行参数。其中sys.argv[0]通常是指该Python程序,sys.argv[1]代表为Python程序提供的第一个参数,sys.argv[2]代表为Python程序提供的第二个参数······以此类推。
  2. sys.path 是一个字符串列表,其中每个字符串都是一个目录名,在使用import语句导入模块时,解释器就会从这些目录中查找指定的模块。
  3. sys.exit() 通过引发SystemExit异常来退出程序。将其放在try块中不能阻止finally块的执行。你可以提供一个整数作为参数(默认为0,标识成功),用来标识程序是否成功运行,这是UNIX的一个惯例。
  4. sys.modules 返回模块名和载入模块对应关系的字典。
  5. sys.platform 此变量是一个字符串,标识解释器当前正在运行的平台名称,它可能是标识操作系统的名称,也可能是标识其他种类的平台,如果运行Jython的话,就是Java虚拟机。
  6. sys.stdin、sys.stdout、sys.stderr 这三个模块变量是类文件流对象,分别表示标准输入、标准输出、标准错误。简单理解,Python利用sys.stdin获得输入,利用sys.stdout输出。
  7. sys.flags 该只读属性返回运行Python命令时指定的旗标。
  8. sys.getfilesystemencoding() 返回在当前系统中保存文件所用的字符集。
  9. sys.getrefcount(object) 返回指定对象的引用计数。前面介绍过,当object对象的引用计数为0时,系统会回收该对象。
  10. sys.getswitchinterval() 返回在当前Python解释器中线程切换的时间间隔。该属性可通过setswitchinterval()函数改变。
  11. sys.implementation 返回当前Python解释器的实现。
  12. sys.maxsize 返回Python整数支持的最大值。在32位平台上,该属性值为2**32-1;在64位平台上,该属性值为2**63-1。
  13. sys.executable 该属性返回Python解释器在磁盘上的存储路径。
  14. sys.byteorder 显示本地字节序的指示符。如果本地字节序是大端模式,则该属性返回big;否则返回little。
  15. sys.copyright 该属性返回与Python解释器有关的版权信息。
  16. sys.version 返回当前Python解释器的版本信息。
  17. sys.winver 返回当前Python解释器的主版本号。
  18. sys.getrecursionlimit() 返回Python解释器当前支持的递归深度。该属性可通过setrecursionlimit()方法重新设置。

2.1 sys.argv

“argv”即“argument value”的简写,是一个列表对象,其中存储的是在命令行调用 Python 脚本时提供的“命令行参数”。其中sys.argv[0]通常是指该Python程序,sys.argv[1]代表为Python程序提供的第一个参数,sys.argv[2]代表为Python程序提供的第二个参数······以此类推。这个列表中的第一个参数是被调用的脚本名称,也就是说,调用 Python 解释器的“命令”(python)本身并没有被加入这个列表当中。

举例来说,在当前目录下新建一个 Python 文件example.py,其内容为:

 

import sys
print("The list of command line arguments:\n", sys.argv)

 

在命令行运行该脚本:

$ python sys_argv_example.py

  The list of command line arguments:

  ['example.py']

2.2 sys.platform

查看sys模块中的sys.platform属性可以得到关于运行平台更详细的信息:

 

sys.platform

 

  'linux'

2.3 sys.byteorder

“byteorder”即“字节序”,指的是在计算机内部存储数据时,数据的低位字节存储在存储空间中的高位还是低位。

“小端存储”时,数据的低位也存储在存储空间的低位地址中,此时sys.byteorder的值为“little”。如果不注意,在按地址顺序打印内容的时候,可能会把小端存储的内容打错。当前大部分机器都是使用的小端存储。

sys.byteorder
 'little'

而另外还存在一种存储顺序是“大端存储”,即数据的高位字节存储在存储空间的低位地址上,此时sys.byteorder的值为“big”

这种方式看起来好像很合理也很自然,因为我们一般在书面表示的时候都将低位地址写在左边,高位地址写在右边,大端存储的顺序就很符合人类的阅读习惯。但实际上对机器而言,内存地址并没有左右之分,所谓的“自然”其实并不存在。

2.4 sys.executable

该属性是一个字符串,在正常情况下,其值是当前运行的 Python 解释器对应的可执行程序所在的绝对路径。

比如在 Windows 上使用 Anaconda 安装的 Python,该属性的值就是:

 >>> sys.executable
 'E:\\Anaconda\\Anaconda\\python.exe'

2.5 sys.modules

该属性是一个字典,包含的是各种已加载的模块的模块名到模块具体位置的映射。

通过手动修改这个字典,可以重新加载某些模块;但要注意,切记不要大意删除了一些基本的项,否则可能会导致 Python 整个儿无法运行。

关于其具体的值,由于内容过多,就不在此给出示例了,读者可以自行查看。

2.6 sys.builtin_module_names

该属性是一个字符串元组,其中的元素均为当前所使用的的 Python 解释器内置的模块名称。

注意区别sys.modulessys.builtin_module_names——前者的关键字(keys)列出的是导入的模块名,而后者则是解释器内置的模块名。

其值示例如下:

>>> sys.builtin_module_names
('_abc', '_ast', '_bisect', '_blake2', '_codecs', '_codecs_cn', '_codecs_hk', '_codecs_iso2022', '_codecs_jp', '_codecs_kr', '_codecs_tw', '_collections', '_contextvars', '_csv', '_datetime', '_functools', '_heapq', '_imp', '_io', '_json', '_locale', '_lsprof', '_md5', '_multibytecodec', '_opcode', '_operator', '_pickle', '_random', '_sha1', '_sha256', '_sha3', '_sha512', '_signal', '_sre', '_stat', '_string', '_struct', '_symtable', '_thread', '_tracemalloc', '_warnings', '_weakref', '_winapi', 'array', 'atexit', 'audioop', 'binascii', 'builtins', 'cmath', 'errno', 'faulthandler', 'gc', 'itertools', 'marshal', 'math', 'mmap', 'msvcrt', 'nt', 'parser', 'sys', 'time', 'winreg', 'xxsubtype', 'zipimport', 'zlib')

2.7 sys.path

该属性是一个由字符串组成的列表,其中各个元素表示的是 Python 搜索模块的路径;在程序启动期间被初始化。

其中第一个元素(也就是path[0])的值是最初调用 Python 解释器的脚本所在的绝对路径;如果是在交互式环境下查看sys.path的值,就会得到一个空字符串。

交互式环境查看属性第一个元素:

sys.path[0]
  ''

3.例

sys获取运行参数:

from sys import argv
#输出argv列表的长度
print(len(argv))
#遍历argv列表的每个元素
for arg in argv:
    print(arg)

动态修改模块加载路径:

import sys
#动态添加g:\fk_ext路径作为模块加载路径
sys.path.append('g:\\fk_ext')
#加载g:\fk_ext路径下的hello模块
import hello

  

ref:

1

2

标签:解释器,python,argv,sys,Python,模块,属性
From: https://www.cnblogs.com/matrixray/p/16947997.html

相关文章

  • 使用python和sqlite处理数据
    1.处理空行python程序importpandasaspd#导入pandas库data=pd.read_excel("PittsburghBridges.xls")#读取表格数据res=data.dropna(how="all")#清除空白......
  • 串口模块驱动下载
    关注微信公众号【工控羊】或者微信号【gksheep】,微信公众号后台输入数字编号【1017】即可获取下载链接。......
  • Pycharm Community 2020.2.3 Python代码设计软件下载
    关注微信公众号【工控羊】或者微信号【gksheep】,微信公众号后台输入数字编号【0014】即可获取下载链接。......
  • C#命令行参数解析库System.CommandLine介绍
    命令行参数平常在日常的开发过程中,会经常用到命令行工具。如cmd下的各种命令。以下为sc命令执行后的截图,可以看到,由于没有输入任何附带参数,所以程序并未执行任何操作,只......
  • python实现自动发送邮件
    一、smtplib自带模块,发送邮件二、email自带模块,包装内容、头部信息等三、QQ邮箱需要生成授权码(相当于密码),163邮箱需要账号和密码四、实战测试:importsmtplibfromemail.mime......
  • python实验报告(第13章)
    一、实验目的1.掌握Pygame的基础知识。二、实验环境python版本:3.10(64-bit)三、实验内容1.实例1  实验结果:  四、实验分析:1.掌握了Pygame的基础知识。......
  • 【Python】推荐三个好玩的图像处理库
    1.引言Python是一门高级语言,它可以实现很多功能。Python强大的原因是什么?某种程度上,在于它所拥有的现成的库,使其在编程的各个方向上都易于使用。在本文中,我将向大家展示一......
  • 2022/12/3 Python实验报告
      实验报告1、实验目的和要求了解并掌握Pygame的基本应用2、实验环境笔记本与Python书本3、实验过程实例01制作一个跳跃的小球游戏创建一个游戏......
  • 零基础学python 第七章
    实例1:创建大雁类并定义飞行方法classGeese:'''大雁类'''def__init__(self,beak,wing,claw):print("我是大雁类!我有以下特征:")print(be......
  • PythonWeb开发:90分钟用Flask搭建博客
    来自https://www.bilibili.com/video/BV1gh411q7xo?p=2&vd_source=54aa98683b2f8392aec4499961f896ce1.环境准备1.1搭建虚拟环境在项目文件夹下打开控制台,输入pytho......