sys模块就是用来管理Python自身运行环境,Python就是解释器,运行在操作系统上面的程序,所以sys包,可以用来管理Python运行的参数,比如内存,文件大小等等.
另外一个重要功能就是可以和自己进行命令交互

属性方法 说明
sys.path 返回Python 解释器自动查找所需模块的路径的列表
sys.path.append(path) 添加路径,用于调用模块
sys.argv 打印脚本名和脚本所带的所有参数
sys.exit(n) 退出程序,正常退出时exit(0),其他为异常
sys.stdout 标准输出流
sys.stdout.write(str) 向标准输出写入内容
sys.stdin 标准输入流
sys.stdin.readline() 从标准输入读一行,会读取末尾的换行符。其中默认输入的格式是字符串,如果是int,float类型则需要强制转换。
sys.stderr 标准错误流

sys.path

1. 什么是模块?

把定义的变量和方法存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块

  • 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。
  • 模块可以被别的程序引入,以使用该模块中的函数等功能。
  • 一个模块只会被导入一次。

2. 当使用import语句时,Python解释器是怎么找的对应的文件的?

当解释器遇到 import 语句,Python会在指定的搜索路径下搜索对应的模块(.py文件),如果找到就会被导入,找不到就会报错。

3.搜索路径

搜索路径存放在sys模块的path变量中

  • 搜索路径是在Python编译或安装的时候确定的,安装新的库应该也会修改。搜索路径被存储在sys模块中的path变量
import sys #引入 python 标准库中的 sys.py 模块print(sys.path) #['', 'C:\\Users\\AI0\\Anaconda3\\python36.zip', 'C:\\Users\\AI0\\Anaconda3\\DLLs', 'C:\\Users\\AI0\\Anaconda3\\lib', 'C:\\Users\\AI0\\Anaconda3', 'C:\\Users\\AI0\\AppData\\Roaming\\Python\\Python36\\site-packages', 'C:\\Users\\AI0\\Anaconda3\\lib\\site-packages', 'C:\\Users\\AI0\\Anaconda3\\lib\\site-packages\\win32', 'C:\\Users\\AI0\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Users\\AI0\\Anaconda3\\lib\\site-packages\\Pythonwin', 'C:\\Users\\AI0\\Anaconda3\\lib\\site-packages\\IPython\\extensions', 'C:\\Users\\AI0\\.ipython']

sys.path 输出是一个列表,指定模块的搜索路径,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。

  • 其中第一项是空串’’,代表当前目录,指示Python首先搜索当前目录中的模块。
  • 如果在当前目录下存在与要引入模块同名的文件,就会把要引入的模块屏蔽掉。

添加自己的搜索目录方法

  1. 一是直接修改sys.path,添加要搜索的目录: sys.path.append(’/Users/michael/my_py_scripts’) 这种方法是在运行时修改,运行结束后失效
  2. 第二种方法是设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。

sys.path.append(path)

添加路径,用于调用模块。这种方法是运行时修改,脚本运行后就会失效

sys.path.append('/Users/michael/my_py_scripts')

sys.argv

在外部向程序内部传递参数,保存了脚本名和参数列表

print(sys.argv) #打印脚本名和脚本所带的所有参数
print(sys.argv[0]) #打印脚本所跟的第0个参数
print(sys.argv[1]) #打印脚本所跟的第0个参数

运行:

python 1.py argv1
# 结果:
[1.py,argv1]
1.py
argv1

sys.exit(n)

执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用sys.exit函数,带有一个可选的整数参数返回给调用它的程序,表示你可以在主程序中捕获对sys.exit的调用。(0是正常退出,其他为异常)

import sysdef exitfunc(value):print valuesys.exit(0)print "hello"try:sys.exit(1)
except SystemExit,value:exitfunc(value)

运行结果:

hello
1

sys.stdout/sys.stderr/sys.stdin

stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们

当我们在程序中print(val)时,就相当于我们把东西塞进sys.stdout管道里面即:print = sys.stdout.write(val+’\n’)

stdout就像是一个类文件对象,因为你可以将他赋值给任意的一个文件对象,重定向输出

import sys
print('222')
__console = sys.stdout   # 用于后期还原
with open('log.txt', 'a') as file:sys.stdout = file #把文对象赋给 sys.stdout,那么 print 调用的就是文件对象的 write 方法print('1111')  # 这个print并不会打印到控制台上sys.stdout = __console #如果之后要恢复,再把管道改为原来就行

运行结果:

  • 控制台输出:222
  • 创建一个log.txt,里面打开内容是1111

sys.stdout.write(str)

向标准输出写入内容,例如:sys.stdout.write(“hello world”),屏幕输出 hello world

sys.stdin.readline()

从标准输入读一行,会读取末尾的换行符。其中默认输入的格式是字符串,如果是int,float类型则需要强制转换。

import sys
name=sys.stdin.readline()
print(name) # 就是打印你刚输入的内容

更多参考sys模块文档

python3 sys模块相关推荐

  1. Python3.5源码分析-sys模块及site模块导入

    Python3源码分析 本文环境python3.5.2. 参考书籍<<Python源码剖析>> python官网 Python3的sys模块初始化 根据分析完成builtins ...

  2. sys python3 常用_python之sys模块【获取参数】

    python之sys模块[获取参数] 发布时间:2019-06-13 16:19, 浏览次数:303 , 标签: python sys <>sys模块:system指的是解释器(os指的是 ...

  3. python3(八)sys模块

    sys模块 sys有几个python的内部函数和属性,sys在这里是指Python系统 sys提供python解释器的相关工作 sys模块主要处理系统相关的功能 函数 说明 sys.stdin 标准输 ...

  4. python sys模块作用_浅谈Python中的模块

    模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Mod ...

  5. python中sys模块有什么用_Python sys模块用法详解

    sys 模块代表了 Python 解释器,主要用于获取和 Python 解释器相关的信息. 在 Python 的交互式解释器中先导入 sys 模块,然后输入 [e for e in dir(sys) ...

  6. python之sys模块【获取参数】

    sys模块:system指的是解释器(os指的是操作系统) 常用操作:用于接收系统操作系统调用解释器传入的参数 实验操作: 在python工具中敲入以下代码: import sys print(sys ...

  7. qt调用import sys库_Python模块之 sys 模块

    引入 1.什么是 sys 模块 sys 模块是与 Python 解释器交互的一个接口 该模块提供对解释器使用或维护的一些变量的访问和获取 它提供了许多函数和变量来处理 Python 运行时环境的不同部 ...

  8. Python sys模块的使用

    Python sys模块的使用 sys模块是Python中的标准库,是与Python的解释器交互的库,可以通过sys来获取Python解释器的信息. os模块是与操作系统交互的,对应的是操作系统,sy ...

  9. python 发红包import random用redenv_python 常用模块之random,os,sys 模块

    python 常用模块random,os,sys 模块 python全栈开发OS模块,Random模块,sys模块 OS模块 os模块是与操作系统交互的一个接口,常见的函数以及用法见一下代码: #OS ...

最新文章

  1. 【视频点播最佳实践】视频点播播放异常排查
  2. 华为,牵手这所新大学!
  3. Struts 2创始人Patrick Lightbody看《精通Struts 2:Web 2.0开发实战 》
  4. 如何在Ruby中获得随机数
  5. 在github上创建新分支
  6. CentOS 使用 Docker 安装 Sentry
  7. MySQL前缀索引与覆盖索引:前缀索引对于索引精简 覆盖索引对于查询数据索引化
  8. DWR推送的一些随笔
  9. 操作系统学习笔记-2.1.4进程通信
  10. springboot--多环境
  11. mariadb忘记密码修改密码
  12. [Java] 蓝桥杯BASIC-24 基础练习 龟兔赛跑预测
  13. 中国推动全球4G标准制定
  14. 如何让图片在html中自动填充颜色,教你快速给白背景图填充背景颜色
  15. VMware虚拟桌面
  16. [iOS]分析Mach-O文件
  17. 借贷记账法--借贷记账法 (Debit and Credit)
  18. 数字图像处理 拜耳过滤器简介
  19. 第三讲 Matlab/Simulink入门——离散系统仿真实例
  20. 福大软工1816 · 第三次作业 - 结对项目1

热门文章

  1. zuul 路由不生效_springBoot集成zuul路由forward,设置setSendZuulResponse无效
  2. 人工智能的发展趋势和行业岗位
  3. 【Cocosd2d实例教程五】Cocos2d添加虚拟摇杆控制器
  4. Docker源码分析(十):Docker镜像下载
  5. 分布式系统发展史--转
  6. java.net.URISyntaxException: Illegal character in query
  7. windows下spark开发环境配置
  8. 独立硬盘冗余阵列与HDFS
  9. Linux 的启动流程--转
  10. 【风险管理】策略开发流程