sys 模块简介

In [1]:

  1. import sys

命令行参数

sys.argv 显示传入的参数:

In [2]:

  1. %%writefile print_args.py
  2. import sys
  3. print sys.argv
  1. Writing print_args.py

运行这个程序:

In [3]:

  1. %run print_args.py 1 foo
  1. ['print_args.py', '1', 'foo']

第一个参数 (sys.args[0]) 表示的始终是执行的文件名,然后依次显示传入的参数。

删除刚才生成的文件:

In [4]:

  1. import os
  2. os.remove('print_args.py')

异常消息

sys.exc_info() 可以显示 Exception 的信息,返回一个 (type, value, traceback) 组成的三元组,可以与 try/catch 块一起使用:

In [5]:

  1. try:
  2. x = 1/0
  3. except Exception:
  4. print sys.exc_info()
  1. (<type 'exceptions.ZeroDivisionError'>, ZeroDivisionError('integer division or modulo by zero',), <traceback object at 0x0000000003C6FA08>)

sys.exc_clear() 用于清除所有的异常消息。

标准输入输出流

  • sys.stdin
  • sys.stdout
  • sys.stderr

退出Python

sys.exit(arg=0) 用于退出 Python。0 或者 None 表示正常退出,其他值表示异常。

Python Path

sys.path 表示 Python 搜索模块的路径和查找顺序:

In [6]:

  1. sys.path

Out[6]:

  1. ['',
  2. 'C:\\Anaconda\\python27.zip',
  3. 'C:\\Anaconda\\DLLs',
  4. 'C:\\Anaconda\\lib',
  5. 'C:\\Anaconda\\lib\\plat-win',
  6. 'C:\\Anaconda\\lib\\lib-tk',
  7. 'C:\\Anaconda',
  8. 'C:\\Anaconda\\lib\\site-packages',
  9. 'C:\\Anaconda\\lib\\site-packages\\Sphinx-1.3.1-py2.7.egg',
  10. 'C:\\Anaconda\\lib\\site-packages\\cryptography-0.9.1-py2.7-win-amd64.egg',
  11. 'C:\\Anaconda\\lib\\site-packages\\win32',
  12. 'C:\\Anaconda\\lib\\site-packages\\win32\\lib',
  13. 'C:\\Anaconda\\lib\\site-packages\\Pythonwin',
  14. 'C:\\Anaconda\\lib\\site-packages\\setuptools-17.1.1-py2.7.egg',
  15. 'C:\\Anaconda\\lib\\site-packages\\IPython\\extensions']

在程序中可以修改,添加新的路径。

操作系统信息

sys.platform 显示当前操作系统信息:

  • Windows: win32
  • Mac OSX: darwin
  • Linux: linux2

In [7]:

  1. sys.platform

Out[7]:

  1. 'win32'

返回 Windows 操作系统的版本:

In [8]:

  1. sys.getwindowsversion()

Out[8]:

  1. sys.getwindowsversion(major=6, minor=2, build=9200, platform=2, service_pack='')

标准库中有 planform 模块提供更详细的信息。

Python 版本信息

In [9]:

  1. sys.version

Out[9]:

  1. '2.7.10 |Anaconda 2.3.0 (64-bit)| (default, May 28 2015, 16:44:52) [MSC v.1500 64 bit (AMD64)]'

In [10]:

  1. sys.version_info

Out[10]:

  1. sys.version_info(major=2, minor=7, micro=10, releaselevel='final', serial=0)

原文: https://nbviewer.jupyter.org/github/lijin-THU/notes-python/blob/master/05-advanced-python/05.01-overview-of-the-sys-module.ipynb