sys-系统特定的参数和功能

  • 对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数。
  • sys.argv 
    传递给Python脚本的命令行参数列表。argv[0]是脚本名称。如果使用-c解释器的命令行选项执行命令,argv[0]则将其设置为字符串’-c’。如果没有脚本名称传递给Python解释器,argv[0]则为空字符串。
#!/usr/bin/env python
import sys
print sys.argv[0]
print sys.argv[1]

python进阶学习笔记:11 python内置模块--sys模块_堆栈

sys-异常参数

sys.exc_info()

  • 此函数返回三个值的元组,这些值提供有关当前正在处理的异常的信息。返回的信息特定于当前线程和当前堆栈帧。如果当前堆栈帧未处理异常,则从调用堆栈帧或其调用者获取信息,依此类推,直到找到正在处理异常的堆栈帧。这里,“处理异常”被定义为“正在执行或已执行except子句。”对于任何堆栈帧,只能访问有关最近处理的异常的信息。
  • 如果堆栈中的任何位置都没有处理异常,None则返回包含三个值的元组 。否则,返回的值是。它们的含义是:type获取正在处理的异常的异常类型(类对象); value获取异常参数(其 关联值或第二个参数,如果异常类型是类对象,则始终为类实例); traceback 获取一个回溯对象(参见参考手册),该对象在最初发生异常的位置封装调用堆栈。(type, value,traceback)raise
  • 如果exc_clear()被调用,则此函数将返回三个None值,直到当前线程中引发另一个异常或执行堆栈返回到正在处理另一个异常的帧。

sys-PYTHONPATH

sys.path

  • 一个字符串列表,指定模块的搜索路径。从环境变量初始化PYTHONPATH,加上依赖于安装的默认值。
  • 在程序启动时初始化时,此列表的第一项path[0]是包含用于调用Python解释器的脚本的目录。如果脚本目录不可用(例如,如果以交互方式调用解释器或者从标准输入读取脚本), path[0]则是空字符串,它指示Python首先搜索当前目录中的模块。请注意,脚本目录是在插入 条目之前插入的PYTHONPATH。
  • 示例
>>> import sys
>>> sys.path
['C:\\Users\\zemuerqi\\AppData\\Local\\Programs\\Python\\Python38\\Scripts\\ipython.exe',
 'c:\\users\\zemuerqi\\appdata\\local\\programs\\python\\python38\\python38.zip',
 'c:\\users\\zemuerqi\\appdata\\local\\programs\\python\\python38\\DLLs',
 'c:\\users\\zemuerqi\\appdata\\local\\programs\\python\\python38\\lib',
 'c:\\users\\zemuerqi\\appdata\\local\\programs\\python\\python38',
 '',
 'c:\\users\\zemuerqi\\appdata\\local\\programs\\python\\python38\\lib\\site-packages',
 'c:\\users\\zemuerqi\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\win32',
 'c:\\users\\zemuerqi\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\win32\\lib',
 'c:\\users\\zemuerqi\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\Pythonwin',
 'c:\\users\\zemuerqi\\appdata\\local\\programs\\python\\python38\\lib\\site-packages\\IPython\\extensions',
 'C:\\Users\\zemuerqi\\.ipython']
>>>


sys-输入、输出、错误流

sys.stdin、 sys.stdout、 sys.stderr

  • 与解释器的标准输入,输出和错误流相对应的文件对象。stdin用于除脚本之外的所有解释器输入,但包括对input()和的调用raw_input()。stdout用于输出print和表达语句和用于提示input()和raw_input()。解释器自己的提示和(几乎所有)其错误消息都会转到stderr。stdout并且 stderr不需要是内置文件对象:任何对象都是可接受的,只要它有一个write()带字符串参数的方法即可。(改变这些对象不影响标准的由执行的处理I / O流 os.popen(),os.system()或所述exec*()的函数家族os模块。)

python中三种执行命令的方式

a. 使用os.system("cmd")

    特点是执行的时候程序会打出cmd在linux上执行的信息。

import os
os.system("ls")   #ls是linux的显示当前目录命令

执行结果如下:

python进阶学习笔记:11 python内置模块--sys模块_python_02

在windows上执行如下:

python进阶学习笔记:11 python内置模块--sys模块_python_03

b.os.popen函数    执行命令后通过一个管道文件将结果返回。

如执行当前系统时间的示例:

import os
test=os.popen("date").read()
print(type(test),test)

打开指定的文件示例:

python进阶学习笔记:11 python内置模块--sys模块_python_04

c.subprocess模块。

       在Python3里取消了commands 模块,推荐使用subprocess模块
subprocess运用对线程的控制和监控,将返回的结果赋于一变量,便于程序的处理。有丰富的参数可以进行配置。

import subprocess
cnotallow=subprocess.Popen(r"type home_work_0521_2.py",shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
print(content.stdout.read())

python进阶学习笔记:11 python内置模块--sys模块_python_05