sys是python中较为常用的一个模块,他提供了对python脚本运行时的环境的操作。sys让我们能够访问与python解释器联系紧密的函数和变量。

1、sys.argv #将python脚本运行时的脚本名以及参数作为一个list,并输出。

# -*- coding: utf-8 -*-
"""
Created on Fri Jan  5 23:24:34 2018
自定义文件库命名,然后转出
@author: BruceWong
"""import os
import sys
print(sys.argv)
print('the script name is:',sys.argv[0])
if len(sys.argv) > 1:print("there are", len(sys.argv)-1, "arguments:")  # 使用len(sys.argv)-1采集参数个数-1为减去[0]脚本名称for arg in sys.argv[1:]:            #输出除了[0]外所有参数print(arg)
else:print("there are no arguments!")
'''
the script name is: C:/Users/BruceWong/.spyder-py3/selfdone/自定义文件库命名.py
there are no arguments!
'''

如果直接在ipython或者spyder的编译器下运行,会反应编译器的脚本环境:

In [1]: import sys
In [2]: sys.argv
Out[2]: ['C:/Anaconda3/Scripts/ipython-script.py']

接下来还是在一个脚本下运行,来进一步测试sys的功能;

2 、sys.path #返回一个list,该list为当前脚本的path环境变量(PYTHONPATH)

print(sys.path)
'''
['', 'C:\\Anaconda3\\lib\\site-packages\\spyder\\utils\\site', 'C:\\Anaconda3\\python35.zip', 'C:\\Anaconda3\\DLLs', 'C:\\Anaconda3\\lib', 'C:\\Anaconda3', 'C:\\Anaconda3\\lib\\site-packages', 'C:\\Anaconda3\\lib\\site-packages\\Mako-1.0.7-py3.5.egg', 'C:\\Anaconda3\\lib\\site-packages\\Sphinx-1.4.6-py3.5.egg', 'C:\\Wind\\Wind.NET.Client\\WindNET\\x64', 'C:\\Anaconda3\\lib\\site-packages\\xgboost-0.7-py3.5.egg', 'C:\\Anaconda3\\lib\\site-packages\\win32', 'C:\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Anaconda3\\lib\\site-packages\\Pythonwin', 'C:\\Anaconda3\\lib\\site-packages\\setuptools-27.2.0-py3.5.egg', 'C:\\Anaconda3\\lib\\site-packages\\IPython\\extensions', 'C:\\Users\\BruceWong\\.ipython']
'''

如果我们要增加或者删除pythonpath的话,使用list的insert或者pop功能即可。

3、sys.platform #返回当前平台

In [3]: print(sys.platform)
win32

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

saveout = sys.stdout        # 终在重定向前保存stdout,这样的话之后你还可以将其设回正常
fsock = open('out.log', 'w')      # 打开一个新文件用于写入。如果文件不存在,将会被创建。如果文件存在,将被覆盖。
sys.stdout = fsock                 # 所有后续的输出都会被重定向到刚才打开的新文件上。print('This message will be logged instead of displayed')    # 这样只会将输出结果“打印”到日志文件中;屏幕上不会看到输出sys.stdout = saveout   # 在我们将 stdout 搞乱之前,让我们把它设回原来的方式。    fsock.close()     # 关闭日志文件。

5、sys.modules #sys.modules是一个全局字典,该字典是python启动后就加载在内存中。每当程序员导入新的模块,sys.modules将自动记录该模块。当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。它拥有字典所拥有的一切方法。

print(sys.modules.keys())
print(sys.modules.values())
print(sys.modules["os"])
#<module 'os' from 'C:\\Anaconda3\\lib\\os.py'>

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

In [5]: import sys...:...: def exitfunc(value):...:     print(value)...:     sys.exit(0)...:...: print("hello")...:...: try:...:     sys.exit(1)...: except SystemExit or value:...:     exitfunc(value)...:...:...: print("come?")...:...:...:
hello
---------------------------------------------------------------------------
SystemExit                                Traceback (most recent call last)
<ipython-input-5-d8e0c0f13067> in <module>()9 try:
---> 10     sys.exit(1)11 except SystemExit or value:SystemExit: 1

7、完整版参考Luzhuo 编写

#!/usr/bin/env python
# coding=utf-8
__author__ = 'Luzhuo'
__date__ = '2017/5/8'
# sys_demo.py sys解释器相关函数
# 该模块含有解释器的一些变量,与解释器交互的函数import sysdef sys_demo():# 默认编码print(sys.getdefaultencoding())# Python版本print(sys.version)# 添加模块路径到搜索路径sys.path.append("./module")# (函数)打印异常信息try:1 / 0except:types, value, back = sys.exc_info()  # 捕获异常sys.excepthook(types, value, back)  # 打印异常# 输入和输出sys.stdout.write(">> ")sys.stdout.flush()strs = sys.stdin.readline()[:-1]sys.stderr.write("输入的内容为: {}".format(strs))sys.stderr.flush()def sys_func():lists = sys.argv  # 传递给Python脚本的命令行参数列表 => python p.py -> ['p.py'] / python p.py a 1 -> ['p.py', 'a', '1'] / 程序内执行 -> ['']strs = sys.getdefaultencoding()  # 默认字符集名称strs = sys.getfilesystemencoding()  # 系统文件名字符集名称num = sys.getrefcount(object)  # 返回object的引用计数(比实际多1个)dicts = sys.modules  # 已加载的模块, 可修改, 但不能通过修改返回的字典进行修改lists = sys.path  # 模块搜索路径sys.path.append("./test")  # 动态添加模块搜索路径strs = sys.platform  # 平台标识符(系统身份进行详细的检查,推荐使用) Linux:'linux' / Windows:'win32' / Cygwin:'cygwin' / Mac OS X:'darwin'strs = sys.version  # python解释器版本lists = sys.thread_info  # 线程信息num = sys.api_version  # 解释器C API版本types, value, back = sys.exc_info()  # 捕获异常 详见 异常 文章的 excep() 代码块第二小部分(http://blog.csdn.net/rozol/article/details/69313164)sys.excepthook(types, value, back)  # 打印异常types = sys.last_typevalue = sys.last_valueback = sys.last_traceback# sys.exit([arg]) // 引发SystemExit异常退出Python(可以try), 范围[0,127], None==0, "string"==1sys.exit(0)num = sys.getrecursionlimit()  # 最大递归数(堆栈最大深度), 详见 函数 文章(http://blog.csdn.net/rozol/article/details/69242050)sys.setrecursionlimit(5000)  # 修改最大递归数fnum = sys.getswitchinterval()  # 获取线程切换间隔sys.setswitchinterval(0.005)  # 设置线程切换间隔, 单位秒num = sys.getcheckinterval()  # 解释器的检查间隔sys.setcheckinterval(100)  # 设置解释器检查间隔, 执行(默认)100个虚拟指令执行一次检查, 值为<=0时,检查每个虚拟指令# sys.stdin // 标准输入流strs = sys.stdin.readline()[:-1]# sys.stdout // 标准出入输出sys.stdout.write(">>")sys.stdout.flush()# sys.stderr // 标注错误流sys.stderr.write(">>")# ---lists = sys.builtin_module_names  # 所有模块 (注:非导入模块)path = sys.base_exec_prefix  # Python安装路径path = sys.base_prefix  # 同base_exec_prefixpath = sys.exec_prefix  # 同base_exec_prefixpath = sys.prefix  # 同base_exec_prefixpath = sys.executable  # Python解释器的绝对路径strs = ys.byteorder  # 本机字节顺序指示器, big-endian(最高有效字节在第一位)值为'big', little-endian(最低有效字节在第一位)值为'little'strs = sys.copyright  # python版权num = sys.hexversion  # 16进制版本号lists = sys.implementation  # 当前运行的解释器的信息num = sys.getallocatedblocks()  # 解释器当前分配的内存块的数量boolean = sys.dont_write_bytecode  # 是否不会尝试导入源模块是写入.pyc文件 (False会写入.pyc文件)# sys.getsizeof(object[, default]) // 返回对象的大小bit, 只计算自身内存消耗,不计算引用对象的内存消耗, 调用对象的__sizeof__(), default没有获取到默认返回值num = sys.getsizeof(object)boolean = sys.is_finalizing()  # 解释器是否正在被关机num = sys.maxsize  # 最大整数值(2 ** 31 -1), 与系统有关num = sys.maxunicode  # 最大Unicode值的整数 (1114111)strs = sys.ps1  # 解释器主提示符strs = sys.ps2  # 解释器次提示符sys.call_tracing(func, ("arg",))  # 调用函数sys._clear_type_cache()  # 清除内部类型缓存sys._debugmallocstats()  # 打印CPython内存分配器状态的低级信息sys.setprofile(profilefunc)  # 设置profile函数, 默认Nonesys.getprofile()  # 获取profile函数sys.settrace(tracefunc)  # 设置跟踪函数, def tracefunc(frame、event 和arg):sys.gettrace()  # 获取跟踪函数, 默认Nonesys.set_coroutine_wrapper(wrapper)  # 设置包装 def wrapper(coro):sys.get_coroutine_wrapper()  # 包装, 默认Noneif __name__ == "__main__":sys_demo()# sys_func()

【python】sys模块操作使用相关推荐

  1. python sys模块_Python sys模块

    python sys模块 Python sys module provides easy functions that allow us to interact with the interprete ...

  2. Python sys模块 - Python零基础入门教程

    目录 一.Python sys 模块简介 二.Python sys 模块使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 在 ...

  3. Python sys模块的使用

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

  4. python sys模块讲解_python模块之sys模块和序列化模块(实例讲解)

    sys模块 sys模块是与python解释器交互的一个接口 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys. ...

  5. Python -- sys模块

    sys介绍: sys是system的缩写,用来获取操作系统和编译器的一些配置,设置及操作.如判断文件和文件夹是否存在,创建文件文件夹,获取系统版本之类的操作.   Python的sys模块提供访问解释 ...

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

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

  7. python sys模块_Python 基础(二十):sys 模块

    1. 简介 sys 模块主要负责与 Python 解释器进行交互,该模块提供了一系列用于控制 Python 运行环境的函数和变量. 之前我们说过 os 模块,该模块与 sys 模块从名称上看着好像有点 ...

  8. Python sys模块参考手册

    sys.argv 命令行参数List,第一个元素是程序本身路径 sys.modules.keys() 返回所有已经导入的模块列表 sys.exc_info() 获取当前正在处理的异常类,exc_typ ...

  9. python sys模块详解_python之sys模块详解

    sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和我一起走进python的模块吧! sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传递参数. sys.exit([ ...

  10. python sys模块 argv用法_python中sys模块的argv

    """笨办法学python,启动时在命令行中python 脚本文件名 filename"""from sys import argv# ar ...

最新文章

  1. 直播写代码|英伟达工程师亲授如何加速YOLO目标检测
  2. [Apio2012]dispatching 主席树做法
  3. 双非高校硕士一作发学校首篇Nature后,选择离开科研当公务员,本人及导师回应...
  4. 魅族官宣好消息:魅族16s Pro暮光森林终于要来了
  5. windwos::mutex
  6. python pip工具安装教程
  7. gif转换成jpg,这个方法很简单
  8. 对象存储osd以及存储分类
  9. Win11声卡驱动怎么更新?Win11声卡驱动更新方法
  10. 开源数据库postgreSQL13在麒麟v10sp1源码安装
  11. strlen函数详解
  12. [笔记分享] [RTC] Alarm内核驱动分析
  13. KAZE与SIFT算法比较
  14. 六月计算机应用基础考试是啥,2017年6月计算机应用基础试题及答案
  15. GV7704中文资料 hd-vlc
  16. linux安装福昕PDF阅读器
  17. 京东网页版静态页面的几个问题
  18. c语言wait 的参数,WaitCallback如何传递ref参数
  19. Graphics2d消除锯齿整理
  20. BOM浏览器对象模型(Browser Object Model)

热门文章

  1. pytorch复现RRU-Net
  2. 系统的可靠性分析与设计---提高系统可靠性的措施
  3. 抽象类是不是必须要有抽象方法
  4. 远程协同办公 远程协同办公的7点建议和方案 居家办公也能高效率
  5. VS2013 设置背景图
  6. 2021-05-18 C#.NET面试题 一张长方形的桌面上放n个一样大小的圆形硬币。这些硬币中可能有一些不完全在桌面内,也可能有一些彼此重叠;当再多放一个硬币而它的圆心在桌面内时,新放的硬币便必定与
  7. 实战项目 — 爬取中国票房网年度电影信息并保存在csv
  8. 关于a:hover span和a span:hover的区别
  9. iOS-底层原理 06: cls 与类的关联原理
  10. 全球最大同性交友网站十周年!