转载:python基础之模块
2016-01-21 09:05
477 查看
作者:武沛齐
出处:http://www.cnblogs.com/wupeiqi/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
模块,用一砣代码实现了某个功能的代码集合。
类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个.py文件组成的代码集合就称为模块。
如:os是系统相关的模块;file是文件操作相关的模块
模块分为三种:
自定义模块
内置模块
开源模块
情景一:
执行命令-通过用户名和密码连接服务器
执行命令-过密钥链接服务器
上传或者下载文件-通过用户名和密码
上传或下载文件-通过密钥
用于提供系统级别的操作
md5-废弃
sha-废弃
以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。
还不够吊?python还有一个hmac模块,它内部对我们创建key和内容再进行处理然后再加密
不能再牛逼了!!!
四、json和pickle
用于序列化的两个模块
json,用于字符串和python数据类型间进行转换
pickle,用于python特有的类型和python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
commands
以上执行shell命令的相关的模块和函数的功能均在subprocess模块中实现,并提供了更丰富的功能。
call
执行命令,返回状态码
shell=True,允许shell命令是字符串形式
check_call
执行命令,如果执行状态码是0,则返回0,否则抛异常
check_output
执行命令,如果状态码是0,则返回执行结果,否则抛异常
subprocess.Popen(...)
用于执行复杂的系统命令
参数:
args:shell命令,可以是字符串或者序列类型(如:list,元组)
bufsize:指定缓冲。0无缓冲,1行缓冲,其他缓冲区大小,负值系统缓冲
stdin,stdout,stderr:分别表示程序的标准输入、输出、错误句柄
preexec_fn:只在Unix平台下有效,用于指定一个可执行对象(callableobject),它将在子进程运行之前被调用
close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道。
所以不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin,stdout,stderr)。
shell:同上
cwd:用于设置子进程的当前目录
env:用于指定子进程的环境变量。如果env=None,子进程的环境变量将从父进程中继承。
universal_newlines:不同系统的换行符不同,True->同意使用\n
startupinfo与createionflags只在windows下有效
将被传递给底层的CreateProcess()函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等
执行普通命令
终端输入的命令分为两种:
输入即可得到输出,如:ifconfig
输入进行某环境,依赖再输入,如:python
ViewCode
ViewCode
ViewCode
ViewCode
更多猛击这里
六、shutil
高级的文件、文件夹、压缩包处理模块
shutil.copyfileobj(fsrc,fdst[,length])
将文件内容拷贝到另一个文件中,可以部分内容
ViewCode
shutil.copyfile(src,dst)
拷贝文件
ViewCode
shutil.copymode(src,dst)
仅拷贝权限。内容、组、用户均不变
ViewCode
shutil.copystat(src,dst)
拷贝状态的信息,包括:modebits,atime,mtime,flags
ViewCode
shutil.copy(src,dst)
拷贝文件和权限
ViewCode
shutil.copy2(src,dst)
拷贝文件和状态信息
ViewCode
shutil.ignore_patterns(*patterns)
shutil.copytree(src,dst,symlinks=False,ignore=None)
递归的去拷贝文件
例如:copytree(source,destination,ignore=ignore_patterns('*.pyc','tmp*'))
ViewCode
shutil.rmtree(path[,ignore_errors[,onerror]])
递归的去删除文件
ViewCode
shutil.move(src,dst)
递归的去移动文件
ViewCode
shutil.make_archive(base_name,format,...)
创建压缩包并返回文件路径,例如:zip、tar
base_name:压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
如:www=>保存至当前路径
如:/Users/wupeiqi/www=>保存至/Users/wupeiqi/
format: 压缩包种类,“zip”,“tar”,“bztar”,“gztar”
root_dir: 要压缩的文件夹路径(默认当前目录)
owner: 用户,默认当前用户
group: 组,默认当前组
logger: 用于记录日志,通常是logging.Logger对象
ViewCode
shutil对压缩包的处理是调用ZipFile和TarFile两个模块来进行的,详细:
zipfile压缩解压
tarfile压缩解压
ZipFile
TarFile
七、ConfigParser
用于对特定的配置进行操作,当前模块的名称在python3.x版本中变更为configparser。
八、logging
用于便捷记录日志且线程安全的模块
对于等级:
只有大于当前日志等级的操作才会被记录。
对于格式,有如下属性可是配置:
flags
2、search(pattern,string,flags=0)
根据模型去字符串中匹配指定内容,匹配单个
3、group和groups
4、findall(pattern,string,flags=0)
上述两中方式均用于匹配单值,即:只能匹配字符串中的一个,如果想要匹配到字符串中所有符合条件的元素,则需要使用findall。
5、sub(pattern,repl,string,count=0,flags=0)
用于替换匹配的字符串
相比于str.replace功能更加强大
6、split(pattern,string,maxsplit=0,flags=0)
根据指定匹配进行分组
相比于str.split更加强大
实例:计算器源码
十一、random
随机数
随机验证码实例:
出处:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
模块,用一砣代码实现了某个功能的代码集合。
类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个.py文件组成的代码集合就称为模块。
如:os是系统相关的模块;file是文件操作相关的模块
模块分为三种:
自定义模块
内置模块
开源模块
自定义模块
1、定义模块情景一:
执行命令-通过用户名和密码连接服务器
执行命令-过密钥链接服务器
上传或者下载文件-通过用户名和密码
上传或下载文件-通过密钥
内置模块
一、os用于提供系统级别的操作
md5-废弃
sha-废弃
四、json和pickle
用于序列化的两个模块
json,用于字符串和python数据类型间进行转换
pickle,用于python特有的类型和python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
commands
以上执行shell命令的相关的模块和函数的功能均在subprocess模块中实现,并提供了更丰富的功能。
call
执行命令,返回状态码
check_call
执行命令,如果执行状态码是0,则返回0,否则抛异常
执行命令,如果状态码是0,则返回执行结果,否则抛异常
用于执行复杂的系统命令
参数:
args:shell命令,可以是字符串或者序列类型(如:list,元组)
bufsize:指定缓冲。0无缓冲,1行缓冲,其他缓冲区大小,负值系统缓冲
stdin,stdout,stderr:分别表示程序的标准输入、输出、错误句柄
preexec_fn:只在Unix平台下有效,用于指定一个可执行对象(callableobject),它将在子进程运行之前被调用
close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道。
所以不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin,stdout,stderr)。
shell:同上
cwd:用于设置子进程的当前目录
env:用于指定子进程的环境变量。如果env=None,子进程的环境变量将从父进程中继承。
universal_newlines:不同系统的换行符不同,True->同意使用\n
startupinfo与createionflags只在windows下有效
将被传递给底层的CreateProcess()函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等
执行普通命令
终端输入的命令分为两种:
输入即可得到输出,如:ifconfig
输入进行某环境,依赖再输入,如:python
ViewCode
ViewCode
ViewCode
ViewCode
更多
六、shutil
高级的文件、文件夹、压缩包处理模块
shutil.copyfileobj(fsrc,fdst[,length])
将文件内容拷贝到另一个文件中,可以部分内容
ViewCode
shutil.copyfile(src,dst)
拷贝文件
ViewCode
shutil.copymode(src,dst)
仅拷贝权限。内容、组、用户均不变
ViewCode
shutil.copystat(src,dst)
拷贝状态的信息,包括:modebits,atime,mtime,flags
ViewCode
shutil.copy(src,dst)
拷贝文件和权限
ViewCode
shutil.copy2(src,dst)
拷贝文件和状态信息
ViewCode
shutil.ignore_patterns(*patterns)
shutil.copytree(src,dst,symlinks=False,ignore=None)
递归的去拷贝文件
例如:copytree(source,destination,ignore=ignore_patterns('*.pyc','tmp*'))
ViewCode
shutil.rmtree(path[,ignore_errors[,onerror]])
递归的去删除文件
ViewCode
shutil.move(src,dst)
递归的去移动文件
ViewCode
shutil.make_archive(base_name,format,...)
创建压缩包并返回文件路径,例如:zip、tar
base_name:压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
如:www=>保存至当前路径
如:/Users/wupeiqi/www=>保存至/Users/wupeiqi/
format: 压缩包种类,“zip”,“tar”,“bztar”,“gztar”
root_dir: 要压缩的文件夹路径(默认当前目录)
owner: 用户,默认当前用户
group: 组,默认当前组
logger: 用于记录日志,通常是logging.Logger对象
shutil对压缩包的处理是调用ZipFile和TarFile两个模块来进行的,详细:
zipfile压缩解压
tarfile压缩解压
ZipFile
TarFile
七、ConfigParser
用于对特定的配置进行操作,当前模块的名称在python3.x版本中变更为configparser。
用于便捷记录日志且线程安全的模块
对于格式,有如下属性可是配置:
flags
2、search(pattern,string,flags=0)
根据模型去字符串中匹配指定内容,匹配单个
importre obj=re.search('\d+','u123uu888asf') ifobj: printobj.group()
3、group和groups
a="123abc456" printre.search("([0-9]*)([a-z]*)([0-9]*)",a).group() printre.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0) printre.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1) printre.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2) printre.search("([0-9]*)([a-z]*)([0-9]*)",a).groups()
4、findall(pattern,string,flags=0)
上述两中方式均用于匹配单值,即:只能匹配字符串中的一个,如果想要匹配到字符串中所有符合条件的元素,则需要使用findall。
importre obj=re.findall('\d+','fa123uu888asf') printobj
5、sub(pattern,repl,string,count=0,flags=0)
用于替换匹配的字符串
content="123abc456" new_content=re.sub('\d+','sb',content) #new_content=re.sub('\d+','sb',content,1) printnew_content
相比于str.replace功能更加强大
6、split(pattern,string,maxsplit=0,flags=0)
根据指定匹配进行分组
content="'1-2*((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))'" new_content=re.split('\*',content) #new_content=re.split('\*',content,1) printnew_content
content="'1-2*((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))'" new_content=re.split('[\+\-\*\/]+',content) #new_content=re.split('\*',content,1) printnew_content
inpp='1-2*((60-30+(-40-5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))' inpp=re.sub('\s*','',inpp) new_content=re.split('\(([\+\-\*\/]?\d+[\+\-\*\/]?\d+){1}\)',inpp,1) printnew_content
相比于str.split更加强大
实例:
十一、random
随机数
相关文章推荐
- flask之行(flask环境安装)
- Python login Day1
- Solaris 10下使用Python3
- Python之装饰器
- Python 装饰器笔记
- 第六章 学习笔记
- python类型转换、数值操作
- Mac OS X 10.11.1下搭建Python3.4 + PyQt5.5.1 +Eric6.1.1开发平台
- python subprocess.Popen简明总结
- python-78:对日期格式进行处理
- python-79:为什么要对日期进行处理
- python-80:获取文章的内容
- python-81:交互
- python-82:交互部分模拟实现的源码
- python-83:公务员时间源码 V-0.1
- python解析html
- xpath使用小结
- python核心编程-线程threading模块之生产者与消费者
- python 写99乘法表
- python 写99乘法表