1. sys模块
1) 处理命令行参数
print "script name is", sys.argv[0] # 使用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!"2. 查询扩展模块路径
sys.path
3. 使用sys模块查找内建模块
builtin_module_names 列表包含 Python 解释器中所有内建模块的名称
sys.builtin_module_names
使用sys模块查找已导入的模块
print sys.modules.keys()
4. 使用sys模块获得当前平台
sys.platform 返回当前平台 出现如: "win32" "linux2" 等
5. 处理标准输出/输入
标准输入和标准错误 (通常缩写为 stdout 和 stderr) 是内建在每一个 UNIX 系统中的管道 >>> import sys >>> for i in range(3): ... sys.stdout.write('Dive in') Dive inDive inDive in >>> for i in range(3): ... sys.stderr.write('Dive in') Dive inDive inDive in 1) 重定向输出 print 'Dive in' # 标准输出 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() # 关闭日志文件。 2) 重定向错误信息 fsock = open('error.log', 'w') # 打开你要存储调试信息的日志文件。 sys.stderr = fsock # 将新打开的日志文件的文件对象赋值给stderr以重定向标准错误。 raise Exception, 'this error will be logged' # 引发一个异常,没有在屏幕上打印出任何东西,所有正常的跟踪信息已经写进error.log 还要注意你既没有显式关闭日志文件,也没有将 stderr 设回最初的值。 这样挺好,因为一旦程序崩溃 (由于引发的异常),Python 将替我们清理并关闭文件3) 输入的用法
import sys while True: line = sys.stdin.readline() line = line.strip('\r').strip('\n') if line == '': break print "====", line6. 使用sys模块退出程序
import sys sys.exit(1) 注意 sys.exit 并不是立即退出. 而是引发一个 SystemExit 异常. 这意味着你可以在主程序中捕获对 sys.exit 1) 另一种捕获sys.exit调用的方法 def exitfunc(): print "world" sys.exitfunc = exitfunc # 设置捕获时调用的函数 print "hello" sys.exit(1) # 退出自动调用exitfunc()后,程序依然退出了 print "there" # 不会被 print 2) 捕获sys.exit调用 import sys print "hello" try: sys.exit(1) except SystemExit: # 捕获退出的异常 pass # 捕获后不做任何操作 print "there"输出结果:
hello
there
时间: 2024-11-26 18:06:08