python包
sys模块,主要实现与解释器相关的操作:
sys.argv,用来获取命令行参数,是一个list;
sys.argv[0] 代表文件本身路径,
sys.argv[1] 开始,代表传入的参数;
sys.exit(),python带返回码返回,0默认的正常退出,1表示异常退出。
sys.stdin,sys.stdout,sys.err,分别代码标准输入输出的句柄。
1) 标准输出的写,可以直接print "num",也可以 sys.stdout.write(hello world“”)
2) 通过对stdout对象进行赋值,可以直接重定向。
with open("file", 'r') as file:
sys.stdout = file;
print "this"
3)直接在print函数中,指定句柄,print ("i am hym", file=f)
os模块,提供系统级别的操作,或者系统信息。
os.system(),运行shell命令,
os.environ,返回系统的环境变量,是一个dict指针。
env_dist = os.environ
print env_dist['Java']
print env_dist.get('Java')
subprocess,系统命令操作,
输入参数,shell=False,默认情况,cmd只能是一个string。
shell=True,cmd只能是一个list。
call(),执行cmd,等待cmd完成,返回返回码。
check_call(),与call()类似,但是返回值不为0时,会raise objection。
getstatusoutput(),返回(status,output)
getoutput()
check_output(),与getoutput类似,但是返回值不为0时,会raise objection。
Popen的object,内部的attribute,stdin,stdout,stderr,pid,returncode。
内部的function,poll(),检查child process是不是结束,返回返回码。
wait(),等待child process结束。
communicate(),与子进程交流,将括号中的数据发送到子进程的stdin中,为None,不发送。
返回一个tuple,(stdout,stderr)
Popen返回的是一个process的对象,可以实现很多自由控制;
p1 = Popen("mesg", stdout=PIPE) PIPE表示管道。
p2 = Popen("grep, hda", stdin=p1.stdout, stdout=PIPE)
output = p2.communicate()[0]
p1.wait() p2.wait()
python中的自带函数和变量:
启动python之后,python会自动import一个__builtin__的模块, 其中包含了4个copyright相关的名字:
6个内建的常数,None,True,False等。
68个内建函数,abs(),len()等。
64个Exception 命名。
(python3中,该模块的名字改为builtins)
dir()函数,返回当前范围内的变量,方法,类型的列表,可以加object来返回某个object的。
dir(list),dir(dict),dir(re),dir(list),dir(dict),dir(tuple),dir(object) 等。
打印帮助文档,print (re.__doc__),__doc__这样的方法可以通过dir()来查询到, 还有__name__
dir(__builtin__)可以查看python中内建的函数,
dir(str),dir(list)可以查看某个类型的内建函数。
help()函数,详细的打印当前函数,模块的说明。内建函数。
ABC,Abstract Base Class(抽象基类),主要定义基本类和基本的抽象方法,定义一个特殊的metaclass,
metaclass还定义了一些装饰器,@abstractmethod,@abstractproperty,
abc.ABCMeta用于在Python程序中创建抽象基类。
其他的抽象基类,必须从该模块来扩展, Python2的扩展方式, class Myclass(object):
__mtaclass__ = abc.ABCMeta
Python3的扩展方式, class Myclass(metaclass == abc.ABCMeta):
定义纯虚的function和attr,可以使用装饰器,@abc.abstractmethod,@abc.abstractproperty
为了统一Python2和Python3的统一性,可以import six,在虚类中加装饰器,
import six
@six.add_metaclass(Meta)
class Myclass(object):
还有一种虚拟子类,通过register的方式注册的产生虚类的情况。
python中的标准库有很多种,设计到方方面面,官方的dos网址:
https://docs.python.org/3/library/index.html