#!/bin/env python #-*- encoding=utf8 -*- import sys if __name__=="__main__": # 在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称. print sys.argv
执行命令: D:python_test>python test_path.py
输出结果:['test_path.py']
执行命令: D:python_test>python test_path.py 9090
输出结果:['test_path.py', '9090']
#!/bin/env python #-*- encoding=utf8 -*- # 使用sys模块操作模块搜索路径 if __name__=="__main__": import sys # path 列表是一个由目录名构成的列表 # Python 从中查找扩展模块( Python 源模块, 编译模块,或者二进制扩展). # path是一个普通的列表,可以在程序中对其进行操作 print sys.path sys.path.insert(0,"samples") # 将路径插入到下标0的位置 sys.path.append("Root_path") # 程序中会用到指定路径插入到搜索路径列表中 print sys.path sys.path = [] # 删除path中的所有路径 print sys.path
sys.builtin_module_names: #查找内建模块是否存在
#!/bin/env python #-*- encoding=utf8 -*- import sys def dump(module): print module, "=>", if module in sys.builtin_module_names: #查找内建模块是否存在 print "<BUILTIN>" else: module = __import__(module) #非内建模块输出模块路径 print module.__file__ if __name__=="__main__": dump("sys") dump("os")
使用sys模块查找已导入的模块
modules 字典包含所有加载的模块. import 语句在从磁盘导入内容之前会先检查这个字典.
Python 在处理你的脚本之前就已经导入了很多模块.
#!/bin/env python #-*- encoding=utf8 -*- import sys if __name__=="__main__": print sys.modules.keys()
使用sys模块获得当前平台
#!/bin/env python #-*- encoding=utf8 -*- import sys if __name__=="__main__": print sys.platform
输出: win3
使用sys模块退出程序
import sys sys.exit(1)
# 使用exit函数时,会已抛出异常的方式来结束程序
注意 sys.exit 并不是立即退出. 而是引发一个 SystemExit 异常. 这意味着你可以在主程序中捕获对 sys.exit 的调用
捕获sys.exit调用
如果准备在退出前自己清理一些东西(比如删除临时文件), 你可以配置一个 "退出处理函数"(exit handler), 它将在程序退出的时候自动被调用
#!/bin/env python #-*- encoding=utf8 -*- import sys if __name__=="__main__": print "hello" try: sys.exit(1) except SystemExit: # 捕获退出的异常 print "SystemExit...." pass # 捕获后不做任何操作 print "there"
输出:hello
SystemExit....
there
另一种捕获sys.exit调用的方法
#!/bin/env python #-*- encoding=utf8 -*- import sys # 退出前执行的函数 def exitfunction(): print "get exit function" if __name__=="__main__": sys.exitfunc = exitfunction # 设置捕获时调用的函数 print "hello" sys.exit(1) # 退出自动调用exitfunc()后,程序依然退出 print "end.." # 不会被print
输出: hello
get exit function