Part5 - 常用模块学习

送分小仙女□ 提交于 2020-01-10 08:36:17
1.模块定义、分类
2.导入方法、本质
3.常用模块简介
1.模块分类
2.常用模块
Configparser, Hashlib, json&pickle, logging, os, paramiko, PyYAML, random, re, shelve, shutil, Subprocess, sys, time&datetime, xml

一、模块定义、分类

  • 模块:本质是.py结尾的文件,用来从逻辑上组织python代码(变量、函数、类),实现一个功能
  • :本质是带__init__.py文件的目录,用来从逻辑上组织模块

二、导入方法、本质

  • 导入模块:本质是把python文件解释一遍(所有代码加载到该位置,并赋给模块名)
  • 导入包:本质是把该包下的__init__.py文件执行

(1) 导入示例

import module_name1,module_name2       #导入多个模块  
from module_name import method_name         #从模块中导入方法  
from package_name import module_name        #从包中导入模块,最小化导入(推荐的方式)  
from package_name.module_name import method_name      #从指定包的模块中导入方法  
from module_name import method_name1 as method_name2    #从模块中导入方法并改名(不与本模块中方法名冲突) 

三、常用模块简介

1、模块分类

  • 标准库(内置模块),如sys os
  • 开源模块(第三方模块)
  • 自定义模块

2、常用模块

(1) Configparser

用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser。

(2) Hashlib

用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

(3) json & picle

用于序列化的两个模块
json,用于字符串 和 python数据类型间进行转换(适用于任何语言)
pickle,用于python特有的类型 和 python的数据类型间进行转换(只适用于python)

(4) logging模块

用于便捷记录日志且线程安全的模块

(5) os

用于提供系统级别的操作

(6) paramiko模块

基于ssh用于连接远程服务器并执行相关操作(远程管理)

1) 执行命令,返回stdin,stdout,stderr(paramiko.SSHClient())

import paramiko  
# 创建SSH对象  
ssh = paramiko.SSHClient()  
# 允许连接不在know_hosts文件中的主机  
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  
# 连接服务器  
ssh.connect(hostname='192.168.3.121', port=22, username='root', password='123456')  
# 执行命令  
stdin, stdout, stderr = ssh.exec_command('df')  
# 获取命令结果  
res,err = stdout.read(),stderr.read()  
result = res if res else err  
      
print(result.decode())  
      
# 关闭连接  
ssh.close()

2) 传送文件(模拟scp,sftp协议) paramiko.Transport(('192.168.2.121',22))

import paramiko  
transport = paramiko.Transport(('192.168.3.121', 22))  
transport.connect(username='root', password='123456')  
sftp = paramiko.SFTPClient.from_transport(transport)  
# 将location.py 上传至服务器 /tmp/test.py  
#sftp.put('笔记', '/tmp/test_from_win')  
# 将remove_path 下载到本地 local_path  
sftp.get('/root/oldgirl.txt', 'fromlinux.txt')  
      
transport.close() 

(7) PyYAML模块

Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块。
参考文档:http://pyyaml.org/wiki/PyYAMLDocumentation

(8) random

随机数模块,使用实例生成随机验证码

(9) re正则表达式

re模块用于对python的正则表达式的操作。
'.'     默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行  
'^'     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)  
'$'     匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以  
'*'     匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac")  结果为['abb', 'ab', 'a']  
'+'     匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab', 'abb']  
'?'     匹配前一个字符1次或0次  
'{m}'   匹配前一个字符m次  
'{n,m}' 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果'abb', 'ab', 'abb']  
'|'     匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果'ABC'  
'(...)' 分组匹配,re.search("(abc){2}a(123|456)c", "abcabca456c").group() 结果 abcabca456c  
     
     
'\A'    只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的  
'\Z'    匹配字符结尾,同$  
'\d'    匹配数字0-9  
'\D'    匹配非数字  
'\w'    匹配[A-Za-z0-9]  
'\W'    匹配非[A-Za-z0-9]  
's'     匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 '\t'  
     
'(?P...)' 分组匹配 re.search("(?P[0-9]{4})(?P[0-9]{2})(?P[0-9]{4})","371481199306143242").groupdict("city") 
结果{'province': '3714', 'city': '81', 'birthday': '1993'}  

(10) shelve

是一个通过k,v形式将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式

(11) shutil

高级的 文件、文件夹、压缩包 处理模块

(12) Subprocess

执行系统命令

(13) sys

用于提供对解释器相关的操作

(14) time &datetime模块

time时间模块,datetime时间加减

(15) xml处理

xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单。在json还没诞生的年代,大家只能选择用xml,至今很多传统公司如金融行业的很多系统的接口还主要是xml。

参考:

http://www.cnblogs.com/alex3714/articles/5161349.html
http://www.cnblogs.com/wupeiqi/articles/4963027.html
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!