python sys模块_Python 新手入门必学模块之:sys

sys用来提供与Python 解释器联系紧密的变量和函数,以便帮助我们访问解释器。因此,sys 是一个和 Python 解释器关系密切的标准库。

1. sys 模块

1.1 sys 模块中常用函数和对象

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

1.2 使用样例

>>> sys.copyright # 显示Python解释器有关的版权信息
'Copyright (c) 2001-2018 Python Software Foundation.\nAll Rights Reserved.\n\nCopyright (c) 2000 BeOpen.com.\nAll Rights Reserved.\n\nCopyright (c) 1995-2001 Corporation for National Research Initiatives.\nAll Rights Reserved.\n\nCopyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.\nAll Rights Reserved.'
>>> sys.executable # 显示Python解释器在磁盘上的存储路径
'C:\\Users\\xufiv\\AppData\\Local\\Programs\\Python\\Python37\\pythonw.exe'
>>> sys.platform # 显示Python解释器所在平台
'win32'
>>> sys.version # 显示当前Python解释器的版本信息
'3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]'
>>> sys.winver # 返回当前Python解释器的主版本号
'3.7'
>>> sys.byteorder # 显示本地字节序的指示符
'little'
>>> sys.getfilesystemencoding() # 显示当前系统上保存文件所用的字符集
'utf-8'
>>> sys.maxsize # 显示Python整数支持的最大值
9223372036854775807
>>> sys.path # 使用 import 语句导入模块时,解释器会从这些目录中查找指定的模块
['', 'C:\\Users\\xufiv\\AppData\\Local\\Programs\\Python\\Python37\\Lib\\idlelib', 'C:\\Users\\xufiv\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'C:\\Users\\xufiv\\AppData\\Local\\Programs\\Python\\Python37\\DLLs', 'C:\\Users\\xufiv\\AppData\\Local\\Programs\\Python\\Python37\\lib', 'C:\\Users\\xufiv\\AppData\\Local\\Programs\\Python\\Python37', 'C:\\Users\\xufiv\\AppData\\Roaming\\Python\\Python37\\site-packages', 'C:\\Users\\xufiv\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages', 'C:\\Users\\xufiv\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\win32', 'C:\\Users\\xufiv\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\win32\\lib', 'C:\\Users\\xufiv\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\Pythonwin']
>>> sys.argv # 获取运行 Python 程序的命令行参数
['']

1.3 应用讲解

1.3.1 典型应用:从命令行读取参数

设计一个多项求和的脚本,从命令行读取参数参与求和的各个数字。
# -*- coding:utf-8 -*-

import sys

def multi_sum(args):
    return sum(args)

if __name__ == '__main__':
    print(sys.argv)
    args = sys.argv[1:]
    result = multi_sum([float(item) for item in args])
    print('输入了%d个参数'%len(args))
    print('累计和为%f'%result)
执行结果如下:
PS D:\CSDN> py -3 .\multi_sum.py
['.\\multi_sum.py']
输入了0个参数
累计和为0.000000
PS D:\CSDN> py -3 .\multi_sum.py 3 4.5 2.8
['.\\multi_sum.py', '3', '4.5', '2.8']
输入了3个参数
累计和为10.300000
PS D:\CSDN>

1.3.2 终止脚本执行

在代码的任何地方调用 sys.exit(),都会引发 SystemExit 异常,进而退出程序。需要注意的是,如果 sys.exit() 放在 try 块中,SystemExit 异常被捕获后,无论退出还是不退出程序,都无法阻止执行 finally 语句块。

1.3.3 从控制台读取输入

更多时候,我们使用 Python 的内置函数 input 从控制台读取输入。sys.stdin 则为我们提供了另外一种选择。
>>> str_in = input('Please enter: ') # 使用内置函数 input 从控制台读取输入
Please enter: hello world
>>> str_in
'hello world'
>>> len(str_in)
11
>>> str_in = sys.stdin.readline() # 使用内置函数 sys.stdin.readline 从控制台读取输入
hello world
>>> str_in
'hello world\n'
>>> len(str_in)
12
通过对比可以看出,使用内置函数 sys.stdin.readline 从控制台读取输入时,返回的字符串保留了换行符\n,要想去掉的话,使用strip()函数就可以了。strip()函数可以删除字符串首尾的所有空格以及转义字符。

python sys模块_Python 新手入门必学模块之:sys_第1张图片

你可能感兴趣的:(python,sys模块,sys驱动不能是exe)