福清建设局网站,企业策划公司,手机网站建设技术方案书,有网站了怎么设计网页简介
Python中有许多常用的库或者模块#xff0c;在写代码的时候或多或少会遇到#xff0c;本文对其进行总结#xff0c;方便日后查阅。
pprint
Python中的pprint模块是用于打印数据结构#xff08;如字典#xff0c;列表等#xff09;的模块#xff0c;提供了一种以…简介
Python中有许多常用的库或者模块在写代码的时候或多或少会遇到本文对其进行总结方便日后查阅。
pprint
Python中的pprint模块是用于打印数据结构如字典列表等的模块提供了一种以更可读的方式打印数据结构的方法。pprint在输出时会自动缩进和对齐数据并且能够递归处理嵌套的数据结构确保整个结构都以一致的格式打印出来。
pprint模块主要包含以下两个函数
pprint.pprint(object, streamNone, indent1, width80, depthNone, compactFalse)这个函数打印出一个对象的可读形式。它与内置的print()函数类似但是打印的结果更易读并且适用于任何Python对象。
参数说明
object要打印的对象。stream指定打印的输出流默认为标准输出。indent每个嵌套级别的缩进空格数默认为1。width每行的最大字符宽度默认为80个字符。depth递归打印的最大深度默认为None没有限制。compact如果为True则使用紧凑格式打印数据默认为False。
pprint.pformat(object, indent1, width80, depthNone, compactFalse)该函数返回一个对象的可读字符串而不是打印到标准输出。它与pprint()函数类似但是返回的是一个字符串。
参数说明
object要格式化的对象。indent每个嵌套级别的缩进空格数默认为1。width每行的最大字符宽度默认为80个字符。depth递归格式化的最大深度默认为None没有限制。compact如果为True则使用紧凑格式格式化数据默认为False。
使用pprint模块示例
import pprintdata {name: John, age: 30, city: New York}# 使用pprint函数打印对象
pprint.pprint(data)# 使用pformat函数返回对象的可读字符串
formatted_data pprint.pformat(data)
print(formatted_data)输出结果
{age: 30, city: New York, name: John}
{age: 30, city: New York, name: John}import pprintdata (My name is Daniel, [1, 2, 3, 4, 5], (more tuples, 1.4, 2.8, 5.7), welcome to my blog!)输出结果
(My name is Daniel,[1, 2, 3, 4, 5],(more tuples, 1.4, 2.8, 5.7),welcome to my blog!)从上述示例可以看出使用pprint模块打印的对象更易读并且字典的键值对顺序与原始字典一致当打印复杂的嵌套数据结构时该模块十分有用。
pickle
Python中的pickle模块是一种用于序列化和反序列化Python对象的工具。pickle模块可以将Python对象转化为字节流以便可以在文件中保存或在网络上传输并且可以将字节流反序列化为原始对象。
pickle模块提供了四个主要的函数
pickle.dump(obj, file)将对象序列化并保存到文件中。pickle.load(file)从文件中读取序列化的对象并反序列化为原始对象。pickle.dumps(obj)将对象序列化为字节流。pickle.loads(bytes)将字节流反序列化为原始对象。
pickle模块的特点
支持几乎所有的Python数据类型包括自定义类和函数。序列化后的字节流是二进制格式无法直接阅读和编辑。序列化的对象包含对象的数据和类的信息可以在不同的Python解释器中进行反序列化。
使用pickle模块保存和加载Python对象示例
import pickle# 将对象保存到文件中
data {name: Alan, age: 25}
with open(data.pkl, wb) as f:pickle.dump(data, f)# 从文件中加载对象
with open(data.pkl, rb) as f:data pickle.load(f)
print(data) # {name: Alan, age: 25}# 将对象序列化为字节流
data_bytes pickle.dumps(data)
print(data_bytes)# 将字节流反序列化为对象
data pickle.loads(data_bytes)
print(data) # {name: Alan, age: 25}pickle模块对于保存和加载Python对象的状态非常有用例如在数据持久化、缓存和进程间通信时使用。值得注意的是pickle模块存在安全性风险因为反序列化过程中可以执行任意代码需谨慎使用。
json
Python中的json模块用于处理JSONJavaScript Object Notation格式的数据。JSON是一种轻量级的数据交换格式常用于前后端数据的传输。
json模块提供了四个主要的功能
将Python对象转换为JSON字符串序列化将JSON字符串转换为Python对象反序列化读取或写入JSON文件解析和生成复杂的JSON数据结构
下面列举json模块的一些基本操作
将Python对象转换为JSON字符串序列化
import jsondata {name: John,age: 30,city: New York
}json_data json.dumps(data)
print(json_data) 输出结果
{name: John, age: 30, city: New York}将JSON字符串转换为Python对象反序列化
import jsonjson_data {name: John, age: 30, city: New York}data json.loads(json_data)
print(data) 输出结果
{name: John, age: 30, city: New York}读取或写入JSON文件
import json# 读取JSON文件
with open(data.json, r) as file:data json.load(file)# 写入JSON文件
with open(data.json, w) as file:json.dump(data, file)解析和生成复杂的JSON数据结构
import jsondata {name: Daniel,age: 30,city: New York,friends: [{name: Alan, age: 28},{name: Bob, age: 32}]
}json_data json.dumps(data)
print(json_data)输出结果
{name: Daniel,age: 30,city: New York,friends: [{name: Alan, age: 28},{name: Bob, age: 32}]
}注意python的json模块默认对字典中的键进行排序再进行序列化如果想保持原来的顺序可以使用json.dumps(data, sort_keysFalse)。
glob
Python的glob模块是用于文件路径的通配符匹配的工具可用于查找匹配特定模式的文件名并返回匹配的文件名列表。glob模块提供了一个函数glob接受一个模式参数返回与该模式匹配的文件名列表。
下面是一些常用的模式匹配字符
*匹配任意字符序列不包括路径分隔符。?匹配任意单个字符。[...]匹配指定字符集中的任意一个字符。[!...]匹配不在指定字符集中的任意一个字符。
使用示例
import glob# 查找当前目录下的所有py文件
py_files glob.glob(*.py)
print(py_files)# 查找当前目录及子目录下的所有txt文件
txt_files glob.glob(**/*.txt, recursiveTrue)
print(txt_files)# 查找当前目录及子目录下的所有以a开头的py文件
py_files_starting_with_a glob.glob(**/a*.py, recursiveTrue)
print(py_files_starting_with_a)# 查找当前目录及子目录下的所有以数字开头的文件夹
numbered_folders glob.glob([0-9]*, recursiveTrue)
print(numbered_folders)glob模块返回的文件名列表是按照文件系统的默认顺序排序的可能是任意顺序如果需要按字母顺序排序可以使用sorted函数对列表进行排序。
# 按字母顺序排序文件名列表
sorted_files sorted(py_files)
print(sorted_files)此外glob模块还提供了一些其他函数如iglob函数用于生成一个迭代器escape函数用于转义特殊字符等。
shutil
Python的shutil模块提供了一组高级文件操作函数可以方便地完成文件和文件夹的复制、移动、删除等操作。 shutil.copy(src, dst, *, follow_symlinksTrue): 复制文件从源路径src到目标路径dst。如果目标路径是一个文件夹则将文件复制到该文件夹下并保持原文件名。如果目标路径已存在同名文件则会将其覆盖。如果源文件是一个符号链接并且follow_symlinks为True则会复制符号链接指向的文件而不是符号链接本身。 shutil.copy2(src, dst, *, follow_symlinksTrue): 类似于copy()方法但是在复制文件时会连同文件的元数据如权限、时间戳等一起复制到目标文件。 shutil.copytree(src, dst, symlinksFalse, ignoreNone, copy_functioncopy2, ignore_dangling_symlinksFalse): 递归地复制整个文件夹从源路径src到目标路径dst。如果目标路径已存在则会引发FileExistsError异常。可以通过设置symlinks为True来复制符号链接默认为False。可以通过设置ignore参数为一个函数来过滤需要复制的文件或文件夹。可以通过设置copy_function参数来指定复制文件的方法。 shutil.move(src, dst, copy_functioncopy2): 移动文件或文件夹从源路径src到目标路径dst。如果目标路径已存在同名文件或文件夹则会引发FileExistsError异常。可以通过设置copy_function参数来指定在移动文件时使用的复制方法。 shutil.rmtree(path, ignore_errorsFalse, onerrorNone): 递归地删除整个文件夹包括文件夹下的所有文件和文件夹。如果设置ignore_errors为True则删除时会忽略错误。可以通过设置onerror参数为一个函数来处理删除过程中的错误。 shutil.make_archive(base_name, format, root_dirNone, base_dirNone, verbose0, dry_runFalse, ownerNone, groupNone, loggerNone): 创建一个归档文件可以选择不同的格式。base_name是归档文件名的前缀format是归档文件的类型如zip、tar等。root_dir参数可以指定在归档文件中包含的根目录默认为当前工作目录。base_dir参数可以指定在归档文件中包含的文件夹默认为root_dir。 shutil.unpack_archive(filename, extract_dirNone, formatNone): 解包归档文件将归档文件解压缩到指定的目录中。filename是归档文件的路径extract_dir是解压缩的目标路径。format参数可以指定解包的格式如果没有指定则根据文件的后缀名自动选择。
shutil模块还提供了其他一些方法和常量可以用于操作文件权限、文件名转换等。使用shutil模块可以方便地处理文件和文件夹的复制、移动和删除操作提高了文件操作的效率和便捷性。
logging
Python的logging模块是Python中标准的日志记录工具可以使用该模块在代码中添加日志记录以便在程序运行时捕获和显示信息。logging模块提供了灵活且易于使用的接口可以根据需要配置日志记录的级别、格式和目标。
logging模块包含了四个主要的组件日志器Logger、处理器Handler、过滤器Filter和格式化器Formatter。 日志器Logger日志器是logging模块中的顶级接口用于向应用程序代码暴露日志记录功能。通过创建和配置日志器我们可以控制日志记录的级别、输出位置等。日志器通常使用名称进行标识不同名称的日志器可以用于不同模块或功能的日志记录。 处理器Handler处理器是日志器的辅助组件用于将日志消息发送到指定的目标。常见的处理器包括将日志消息输出到控制台、写入到文件、发送电子邮件等。可以根据需要创建不同的处理器并将它们添加到日志器中。 过滤器Filter过滤器用于对日志消息进行筛选只输出符合指定条件的日志消息。通过创建过滤器并将其添加到处理器或者日志器中可以实现对日志消息的精确控制。 格式化器Formatter格式化器用于定义输出日志消息的格式。可以自定义格式化器的样式例如日期时间格式、日志级别、日志消息等。
使用logging模块进行日志记录的基本步骤 导入logging模块使用import语句导入logging模块。 创建和配置日志器使用logging.getLogger()方法创建一个日志器并设置日志级别。 创建和配置处理器使用logging.handler()方法创建一个处理器并设置日志级别和输出格式。 创建和配置格式化器使用logging.Formatter()方法创建一个格式化器并设置输出格式。 将处理器和格式化器添加到日志器中使用日志器的addHandler()方法将处理器和格式化器添加到日志器中。 在代码中添加日志记录使用日志器的不同方法例如debug()、info()、error()等在代码中添加需要记录的日志信息。 运行程序并观察日志输出运行程序时日志器会根据配置的级别和处理器将日志信息输出到指定的目标上。
Python的logging模块提供了一个灵活且易用的日志记录工具便于输出和管理日志信息。通过配置日志器、处理器、过滤器和格式化器可以根据需求对日志进行精确控制调试和优化程序。
string
Python中的字符串是一种数据类型用于存储和操作文本数据。在Python中字符串是由一系列字符组成的可以包含字母、数字、符号等字符。
创建字符串 可以使用单引号或双引号来创建字符串。例如
str1 Hello World
str2 Python is fun字符串的索引和切片 可以使用索引来访问字符串中的单个字符索引从0开始。例如使用str[i]来访问第i个字符。还可以使用切片操作来获取字符串的子串例如str[start:end]会返回从start位置到end位置之间的字符子串。 字符串的拼接 可以使用加号来拼接字符串。例如
str1 Hello
str2 World
str3 str1 str2
print(str3) # HelloWorld字符串的长度 可以使用len()函数来获取字符串的长度。例如
str1 Hello World
print(len(str1)) # 11字符串的分割 可以使用split()函数将字符串按照指定的分隔符分割成多个子串。例如
str1 Hello World
words str1.split( )
print(words) # [Hello, World]字符串的替换 可以使用replace()函数将字符串中的指定字符或子串替换成新的字符或子串。例如
str1 Hello World
new_str str1.replace(World, Python)
print(new_str) # Hello Python字符串的格式化 可以使用格式化操作符%来格式化字符串。例如
name John
age 25
print(My name is %s and I am %d years old % (name, age)) # My name is John and I am 25 years oldcollections
Python的collections模块是Python标准库中的一个模块它提供了一些方便的数据结构这些数据结构可以用来替代Python内置的数据结构或者是对它们进行扩展。
collections模块中的一些常用数据结构包括 namedtuplenamedtuple提供了一种创建具有命名字段的元组的方法。与普通元组不同的是可以通过字段名来访问元组的元素这样就不需要使用索引来访问。 dequedeque是一个双端队列可以在队列的两端进行添加和删除操作。与列表相比deque在插入和删除元素时速度更快特别是在队列的开头进行操作时。 CounterCounter是一个简单的计数器用于统计可哈希对象的出现次数。它可以接收可迭代对象作为输入并返回一个字典其中键是对象值是对象在可迭代对象中出现的次数。 OrderedDictOrderedDict是一个有序的字典它保持插入元素的顺序。与普通字典不同的是OrderedDict可以按照插入元素的顺序进行迭代这对于需要有序访问字典的场景非常有用。 defaultdictdefaultdict是一个字典的子类它可以指定一个默认的值当访问不存在的键时返回指定的默认值。这样可以避免了判断键是否存在的烦恼。
collections模块还提供了其他一些数据结构如ChainMap、Counter、UserDict等使用collections模块可以提高代码的可读性和效率避免了手动实现一些常用的数据结构和操作。
requests
Python的requests库是一个用于发送HTTP请求的第三方库。它提供了简单且易于使用的接口使得发送HTTP请求变得非常方便。以下是对requests库的详细介绍 安装可以在命令行中使用pip install requests命令来安装requests库。 导入在Python脚本中使用import requests语句来导入requests库。 发送GET请求可以使用requests.get()函数来发送一个GET请求。例如response requests.get(https://api.github.com)将发送一个GET请求到https://api.github.com并将响应保存在变量response中。 发送POST请求可以使用requests.post()函数来发送一个POST请求。例如response requests.post(https://httpbin.org/post, data{key: value})将发送一个POST请求到https://httpbin.org/post并将data参数中的数据作为请求体发送。 设置请求头可以使用headers参数来设置请求头。例如headers {User-Agent: Mozilla/5.0}将设置请求头中的User-Agent字段为Mozilla/5.0。 获取响应内容可以使用response.text属性来获取响应内容的文本形式。例如content response.text将获取响应内容的文本形式并将其保存在变量content中。 获取响应状态码可以使用response.status_code属性来获取响应的状态码。例如status_code response.status_code将获取响应的状态码并将其保存在变量status_code中。 异常处理可以使用try-except语句来处理异常。例如以下代码将捕获所有requests库可能抛出的异常并打印错误信息 try:response requests.get(https://api.github.com)
except requests.exceptions.RequestException as e:print(e)使用requests库可以轻松发送HTTP请求并方便地处理响应数据。
总结
本文所列举的库或者模块都是平时代码中比较常见的属于基础知识还有更多的用法我在文中没有赘述。平时多写写代码留意这些tools的细节就好需要的时候就拿来用。