下面整理一写,python脚本中常用的一些方法,后面会持续积累更新。
一、sys 类
1、sys.argv 函数
该函数是用于获取运行 python 文件时的命令行参数。就是一个从程序外部获取参数的桥梁,这个“外部”很关键,因为从外部取得的参数可以是多个,所以获得的是一个列表(list),其第一个元素是程序本身,即:该文件名,随后才依次是外部给予的参数。
示例:执行命令:$ python test.py zxy
#encoding=utf-8
import sys
a=sys.argv[0]
b=sys.argv[1]
l=len(sys.argv)
print("params_count", l) # 输出:('params_count:', 2)
print("filename:", a) # 输出:('filename:', 'text.py')
print("param1:", b) # 输出:('param1:', 'zxy')
2、 sys.exit() 函数
该函数只有当退出码为0时,表示正常退出;而其它退出码则会认为是异常退出,系统自动抛出SystemExit的异常,方便开发人员在外层捕获并处理。如果需要返回退出码,而不抛出异常的话,可以使用 os._exit() 函数。
sys.exit() 和 os._exit() 两种退出方式的区别:
(1)sys.exit() 函数会引发 SystemExit 异常,如果这个异常没有被捕获,那么python解释器将会退出。如果有捕获此异常的代码,那么这些代码还是会执行。捕获这个异常可以做一些额外的清理工作。0为正常退出,其他数值(1-127)为不正常,可抛异常事件供捕获。
(2)os._exit() 函数会直接将python程序终止,之后的所有代码都不会继续执行。
示例:
#!/usr/local/bin/env python
import os, sys
try:
sys.exit(0)
except:
print('die') # 输出:die
finally:
print('cleanup') # 输出:cleanup
try:
os._exit(0)
except:
print('die') # 没有异常不输出该行
print('os.exit') # 不打印该行直接退出了
综上,sys.exit() 的退出比较优雅,调用后会引发 SystemExit 异常,可以捕获此异常做清理工作。os._exit() 直接将python解释器退出,余下的语句不会执行。一般情况下使用 sys.exit() 即可,一般在 fork 出来的子进程中使用 os._exit() 。
二、os 类
python 调用 Shell 脚本有两种方法:os.system()、os.popen(),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。即:os.popen() 可以实现一个“管道”,从这个命令获取的值可以继续被使用。因为它返回一个文件对象,可以对这个文件对象进行相关的操作。但是如果要直接看到运行结果的话,那就应该使用 os.system() 。
1、os.popen() 函数
该函数用于从一个命令打开一个管道。popen() 语法格式如下:os.popen(command[, mode[, bufsize]])
(1)参数:
command – 使用的命令。
mode – 模式权限可以是 ‘r’(默认) 或 ‘w’。
bufsize – 指明了文件需要的缓冲大小:0意味着无缓冲;1意味着行缓冲;其它正值表示使用参数大小的缓冲(大概值,以字节为单位)。负的bufsize意味着使用系统的默认值,一般来说,对于tty设备,它是行缓冲;对于其它文件,它是全缓冲。如果没有改参数,使用系统的默认值。
(2)返回值:
返回一个文件描述符号为 fd 的打开的文件对象。
从命令cmd打开一个管道,返回值是连接管道的文件对象,通过该对象可以进行读或写。