python3 常用模块_python常用模块整理

一.序列化

Python中用于序列化的两个模块

json     用于【字符串】和 【python基本数据类型】 间进行转换

pickle   用于【python特有的类型】 和 【python基本数据类型】间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

Json.loads()用于将字典,列表形式的字符串转换成相应的字典,列表

Json.dump()将基本数据类型,列表,字典,转换成字符串

pickle模块提供了四个功能:dumps、dump、loads、load

二.安装第三方模块

第1种安装方法:

安装软件管理工具pip3   (python3中自带了pip3)

将pip3添加到环境变量

pip3  install  被安装的东西

第2种安装方法:

下载代码,安装

三.requests模块

Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。

发送get请求

发送携带请求头的get请求

注:更多见Python官方文档:https://docs.python.org/3.5/library/urllib.request.html#module-urllib.request

Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任何操作。

1、安装模块

1

pip3 install requests

2、使用模块

get请求

post请求

其它请求

更多requests模块相关的文档见:http://cn.python-requests.org/zh_CN/latest/

四.XML模块

XML是实现不同语言或程序之间进行数据交换的协议,XML文件格式如下:

2

2023

141100

5

2026

59900

69

2026

13600

1、解析XML

利用ElementTree.XML将字符串解析成xml对象

利用ElementTree.parse将文件直接解析成xml对象

2、操作XML

XML格式类型是节点嵌套节点,对于每一个节点均有以下功能,以便对当前节点进行操作:

节点功能一览表

由于 每个节点 都具有以上的方法,并且在上一步骤中解析时均得到了root(xml文件的根节点),so   可以利用以上方法进行操作xml文件。

a. 遍历XML文档的所有内容

from xml.etree import ElementTree as ET

############ 解析方式一 ############

"""# 打开文件,读取XML内容

str_xml = open('xo.xml', 'r').read()

# 将字符串解析成xml特殊对象,root代指xml文件的根节点

root = ET.XML(str_xml)"""

############ 解析方式二 ############

#直接解析xml文件

tree = ET.parse("xo.xml")

#获取xml文件的根节点

root = tree.getroot()

### 操作

#顶层标签

print(root.tag)

#遍历XML文档的第二层

for child in root:

#第二层节点的标签名称和标签属性

print(child.tag, child.attrib)

#遍历XML文档的第三层

for i in child:

#第二层节点的标签名称和内容

print(i.tag,i.text)

b、遍历XML中指定的节点

from xml.etree import ElementTree as ET

############ 解析方式一 ############

"""# 打开文件,读取XML内容

str_xml = open('xo.xml', 'r').read()

# 将字符串解析成xml特殊对象,root代指xml文件的根节点

root = ET.XML(str_xml)"""

############ 解析方式二 ############

#直接解析xml文件

tree = ET.parse("xo.xml")

#获取xml文件的根节点

root = tree.getroot()

### 操作

#顶层标签

print(root.tag)

#遍历XML中所有的year节点

for node in root.iter('year'):

#节点的标签名称和内容

print(node.tag, node.text)

c、修改节点内容

由于修改的节点时,均是在内存中进行,其不会影响文件中的内容。所以,如果想要修改,则需要重新将内存中的内容写到文件。

解析字符串方式,修改,保存

解析文件方式,修改,保存

d、删除节点

解析字符串方式打开,删除,保存

解析文件方式打开,删除,保存

3、创建XML文档

创建方式一

创建方式二

创建方式三

由于原生保存的XML时默认无缩进,如果想要设置缩进的话, 需要修改保存方式:

View Code

五.configparser模块

configparser用于处理特定格式的文件,其本质上是利用open来操作文件。

指定格式

1、获取所有节点

1

2

3

4

5

6

import configparser

config= configparser.ConfigParser()

config.read('xxxooo', encoding='utf-8')

ret= config.sections()

print(ret)

2、获取指定节点下所有的键值对

1

2

3

4

5

6

import configparser

config= configparser.ConfigParser()

config.read('xxxooo', encoding='utf-8')

ret= config.items('section1')

print(ret)

3、获取指定节点下所有的建

1

2

3

4

5

6

import configparser

config= configparser.ConfigParser()

config.read('xxxooo', encoding='utf-8')

ret= config.options('section1')

print(ret)

4、获取指定节点下指定key的值

1

2

3

4

5

6

7

8

9

10

11

12

import configparser

config= configparser.ConfigParser()

config.read('xxxooo', encoding='utf-8')

v= config.get('section1','k1')

# v = config.getint('section1', 'k1')

# v = config.getfloat('section1', 'k1')

# v = config.getboolean('section1', 'k1')

print(v)

5、检查、删除、添加节点

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

import configparser

config= configparser.ConfigParser()

config.read('xxxooo', encoding='utf-8')

# 检查

has_sec= config.has_section('section1')

print(has_sec)

# 添加节点

config.add_section("SEC_1")

config.write(open('xxxooo','w'))

# 删除节点

config.remove_section("SEC_1")

config.write(open('xxxooo','w'))

6、检查、删除、设置指定组内的键值对

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

import configparser

config= configparser.ConfigParser()

config.read('xxxooo', encoding='utf-8')

# 检查

has_opt= config.has_option('section1','k1')

print(has_opt)

# 删除

config.remove_option('section1','k1')

config.write(open('xxxooo','w'))

# 设置

config.set('section1','k10',"123")

config.w

六.shutil模块

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

shutil.copyfileobj(fsrc, fdst[, length])

将文件内容拷贝到另一个文件中

1

2

3

import shutil

shutil.copyfileobj(open('old.xml','r'),open('new.xml','w'))

shutil.copyfile(src, dst)

拷贝文件

1

shutil.copyfile('f1.log','f2.log')

shutil.copymode(src, dst)

仅拷贝权限。内容、组、用户均不变

1

shutil.copymode('f1.log','f2.log')

shutil.copystat(src, dst)

仅拷贝状态的信息,包括:mode bits, atime, mtime, flags

1

shutil.copystat('f1.log','f2.log')

shutil.copy(src, dst)

拷贝文件和权限

1

2

3

import shutil

shutil.copy('f1.log','f2.log')

shutil.copy2(src, dst)

拷贝文件和状态信息

1

2

3

import shutil

shutil.copy2('f1.log','f2.log')

shutil.ignore_patterns(*patterns)

shutil.copytree(src, dst, symlinks=False, ignore=None)

递归的去拷贝文件夹

1

2

3

import shutil

shutil.copytree('folder1','folder2', ignore=shutil.ignore_patterns('*.pyc','tmp*'))

import shutil

shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))

shutil.rmtree(path[, ignore_errors[, onerror]])

递归的去删除文件

1

2

3

import shutil

shutil.rmtree('folder1')

shutil.move(src, dst)

递归的去移动文件,它类似mv命令,其实就是重命名。

1

2

3

import shutil

shutil.move('folder1','folder3')

shutil.make_archive(base_name, format,...)

创建压缩包并返回文件路径,例如:zip、tar

创建压缩包并返回文件路径,例如:zip、tar

base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,

如:www                        =>保存至当前路径

如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/

format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”

root_dir: 要压缩的文件夹路径(默认当前目录)

owner: 用户,默认当前用户

group: 组,默认当前组

logger: 用于记录日志,通常是logging.Logger对象

1

2

3

4

5

6

7

8

#将 /Users/wupeiqi/Downloads/test 下的文件打包放置当前程序目录

import shutil

ret= shutil.make_archive("wwwwwwwwww",'gztar', root_dir='/Users/wupeiqi/Downloads/test')

#将 /Users/wupeiqi/Downloads/test 下的文件打包放置 /Users/wupeiqi/目录

import shutil

ret= shutil.make_archive("/Users/wupeiqi/wwwwwwwwww",'gztar', root_dir='/Users/wupeiqi/Downloads/test')

shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:

zipfile解压缩

tarfile解压缩

七.logging模块

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

1、单文件日志

1

2

3

4

5

6

7

8

9

10

11

12

13

14

import logging

logging.basicConfig(filename='log.log',

format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',

datefmt='%Y-%m-%d %H:%M:%S %p',

level=10)

logging.debug('debug')

logging.info('info')

logging.warning('warning')

logging.error('error')

logging.critical('critical')

logging.log(10,'log')

日志等级:

CRITICAL = 50

FATAL = CRITICAL

ERROR = 40

WARNING = 30

WARN = WARNING

INFO = 20

DEBUG = 10

NOTSET = 0

注:只有【当前写等级】大于【日志等级】时,日志文件才被记录。

日志记录格式:

2、多文件日志

对于上述记录日志的功能,只能将日志记录在单文件中,如果想要设置多个日志文件,logging.basicConfig将无法完成,需要自定义文件和日志操作对象。

日志(一)

日志(二)

如上述创建的两个日志对象

当使用【logger1】写日志时,会将相应的内容写入 l1_1.log 和 l1_2.log 文件中

当使用【logger2】写日志时,会将相应的内容写入 l2_1.log 文件中

你可能感兴趣的:(python3,常用模块)