python常用模块之sys模块

sys模块

  sys模块是与python解释器交互的模块,它功能非常多,很多我可能都用不上,所以简单小结了几个常用的方法。

参考:

官方文档

其他博客1

其他博客2

 

sys常用方法:

(1)   sys.argv:  实现从程序外部向程序传递参数 

sys.argv是传递给Python脚本的命令行参数列表,其中args[0]总是python脚本名称。

 # test_sys.py

# coding=utf-8
import sys
print('传递进来的命令行参数: ', sys.argv)

 # 在终端执行脚本文件, 输入 python3 test_sys.py a b c

传递进来的命令行参数:  ['test_sys.py', 'a', 'b', 'c']

(2)  sys.exit(n):  程序的退出

正常退出程序 n=0, 错误是1,当然n也可以是字符串,表示错误信息,  程序不正常退出时可以当做异常被捕获

>>> import sys
>>> sys.exit('错误退出')
错误退出

上面直接退出了交互模式,并打印了错误信息。

>>> import sys
>>> try:
...     sys.exit(1)
... except SystemExit as e:
...     print(e)  # 捕获异常
... 
1

(3) sys.version: python的解释器版本信息等

一个字符串,其中包含Python解释器的版本号以及所使用的内部版本号和编译器的附加信息。

>>> sys.version
'3.5.2 (default, Nov 12 2018, 13:43:14) \n[GCC 5.4.0 20160609]'

(4)  sys.path:  获取模块搜索路径的字符串列表。

指定模块搜索路径的字符串列表, 从环境变量 PYTHONPATH初始化

>>> sys.path
['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/home/yscl/.local/lib/python3.5/site-packages', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']

(5) sys.platform: 

获取当前系统平台

>>> sys.platform
'linux'

(6) sys.modules

这是一个将模块名称映射到已经加载的模块的全局字典。它在python启动时就已经加载了,每当导入一个新的模块,该字典就自动记录,第二次导入时就直接从字典里找,从而加快了速度。

(7) sys.getdefaultencoding() / sys.setdefaultencoding() / sys.getfilesystemencoding() 

getdefaultencoding()是获取当前字符编码

setdefaultencoding()是设置默认编码, 在python2中经常出现字符编码的问题,统一用reload(sys); sys.setdefaultencoding('utf-8')就能解决问题

sys.getfilesystemencoding()是获取文件系统编码

>>> sys.getdefaultencoding()
'utf-8'
>>> sys.getfilesystemencoding()
'utf-8'

(8)  sys.stdin, sys.stdout, sys.stderr 

它们分别对应标准输入、标准输出和错误输出

>>> sys.stdin.readline()  # 标准输入读入一行 和input一样
hello
'hello\n'
>>> sys.stdout.write('hello\n')  # 标准输出,实际上print也是调用了该函数
hello
6

python解释器的提示和错误信息也是传到stderr输出的

 

posted @ 2018-11-23 18:34  yscl  阅读(258)  评论(0)    收藏  举报