Python 开发之序列化与反序列化:pickle、json 模块使用详解
引言 在日常开发中,所有的对象都是存储在内存当中,尤其是像 python 这样的坚持一切接对象的高级程序设计语言,一旦关机,在写在内存中的数据都将不复存在。另一方面,存储在内存够中的对象由于编程语言、网络环境等等因素,很难在网络中进行传输交互。由此,就诞生了一种机制,可以实现内存中的对象与方便持久化在磁盘中或在网络中进行交互的数据格式(str、bites)之间的相互转换。这种机制就叫序列化与反序列化:
序列化:将内存中的不可持久化和传输对象转换为可方便持久化和传输对象的过程。
反序列化:将可持久化和传输对象转换为不可持久化和传输对象的过程。
Python 中提供 pickle 和 json 两个模块来实现序列化与反序列化,pickle 模块和 json 模块 dumps()、dump()、loads()、load()这是个函数,其中 dumps()、dump()用于实现序列化,loads()、load()用于实现反序列化。下面,我们分别对 pickle 和 json 模块进行介绍。
pickle 模块 pickle 模块的 dumps()、dump()、loads()、load( ...
Python 中输出表格的两种方式
前言 本文主要介绍 python 中输出表格的两种方式,即分别使用tabulate 和 prettytable。
tabulate安装、导入123pip install tabulatefrom tabulate import tabulate
从 list 生成表格1234567>>> table = [['First Name', 'Last Name', 'Age'], ['John', 'Smith', 39], ['Mary', 'Jane', 25], ['Jennifer', 'Doe', 28]]>>> print(tabulate(table))---------- --------- ---First Name Last Name AgeJohn Smith 39Mary Jane 25Jen ...
Sed 备忘清单
入门 Sed 用法 语法
1$ sed [options] command [input-file]
带管道
1$ cat report.txt | sed 's/Nick/John/g'
1$ echo '123abc' | sed 's/[0-9]+//g'
选项示例
参数
示例
描述
-i
sed -ibak ‘s/On/Off/‘ php.ini
直接备份和修改输入文件
-E
sed -E ‘s/[0-9]+//g’ input-file
使用扩展正则表达式
-n
sed -n ‘3 p’ config.conf
禁止默认图案空间打印
-f
sed -f script.sed config.conf
执行 sed 脚本文件
-e
sed -e ‘command1’ -e ‘command2’ input-file
执行多个 sed 命令
多个命令12$ echo "hello world" | sed - ...
Xpath 轴,函数,谓语笔记
函数
函数
例子
解释
starts-with
//div[starts-with(@id,”maida”)]
选取 id 值为 maida 开头的 div
contains
//div[contains(@id,”maida”)]
选取 id 值含 maida 的 div
and
//div[starts-with(@id,”maida”) and contains(@id,”hello”)]
选取 id 值为 maida 开头且含有 hello 的 div
text()
1. //p/text() 2. div[contains(text(),”maida”)]
1. 获取 p 的文本内容 2. 选取文本内容含 maida 的 div
string
1. string(.) 2. string(//div/a)
1. 获取当前节点的文本内容组合成的单独字符串 2. 获取 //div/a ...
使用 Xpath 定位元素
什么是 XpathXPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。
XPath 定位在爬虫和自动化测试中都比较常用,通过使用路径表达式来选取 XML 文档中的节点或者节点集,熟练掌握 XPath 可以极大提高提取数据的效率。
因为 XPath 解析数据,是基于元素(Element)的树形结构,所以学习 XPath 前,先了解一下 html 的结构及常用标签。
基本标签 1234567891011121314151617 标题:`<h1>、<h2>、<h3>、<h4>、<h5>、<h6>、<title>`段落:<p>链接:<a>图像:<img>样式:<style>列表:` 无序列表 <ul>、有序列表 <ol>、列表项 <li>`块:`<div>、<span>`脚本:<script>注释:<! ...
禁用 vim 的 visual 模式
前言 从 Debian9 开始,为了便于选取文本,VIM 引入了可视 (Visual) 模式。 可以使用以下三种模式:
用 v 命令进入的字符可视化模式(Characterwise visual mode)。文本选择是以字符为单位的。
用 V 命令进入的行可视化模式(Linewise visual mode)。文本选择是以行为单位的。
用 ctrl-V 进入的块可视化模式(Blockwise visual mode)。可以选择一个矩形内的文本。
个人用不太习惯,此处记录一下如何 disable 这个功能。
方法 通过编辑 vim 配置文件去除默认设置的鼠标模式a。可以编辑全局 /etc/vim/vimrc.local 或者当前用户配置文件~/.vimrc
1234567tee /etc/vim/vimrc.local << EOFsource $(find / -name defaults.vim)let skip_defaults_vim = 1if has('mouse') set mouse-=aendifEOF
此处也记录一下 ...
一些 git 笔记
Git global setup12git config --global user.name "Your Name"git config --global user.email "your.name@example.com"
Create a new repository on the command line1234567echo "# template" >> README.mdgit initgit add README.mdgit commit -m "first commit"git branch -M maingit remote add origin git@github.com:Chasing66/template.gitgit push -u origin main
Push an existing repository from the command line123git remote add origin git@github.com:Chasing66/templ ...
使用 Apche/Nginx 在 Ubuntu 22.04 上安装 RailLoop
前言RainLoop 是一个简单,现代,快速和开源的基于 Web 的电子邮件客户端,用 PHP 编写。
Rainloop 特性
现代的 Web 界面,允许上传自定义主题
快速轻便
同时支持 SMTP 和 IMAP
支持多个帐户,可以从一个地方访问所有电子邮件地址。
支持双因素身份验证。
与 Facebook, Twitter, Google, and Dropbox 集成
无需数据库, 可以直接访问邮件服务器
易于安装和升级(在管理面板中一键升级)
Rainloop 版本选择Rainloop 有标准版和社区版两个版本, 本文使用社区版(免费)
安装 Step 1: Install Apache + PHP7 或者 Nginx + PHP7 如果使用 Apache 和 PHP712sudo apt updatesudo apt install apache2 php7.4 libapache2-mod-php7.4
如果使用 Nginx 和 PHP712sudo apt updatesudo apt install nginx php7.4 php7.4-fpm php7.4-cur ...
git 撤销提交
未使用 git add 的时候 – 在工作区 放弃修改某个文件1git checkout -- filepathname
放弃所有修改的文件12git checkout .git restore .
已经使用 git add 的时候 – 在暂存区 恢复某个文件到工作区1git reset HEAD filepathname
恢复所有文件到工作区git reset HEAD .git reset
1注意:这里只是恢复到了工作区,如果想放弃修改的代码还需要执行步骤 1(工作区)中的操作
已经使用 git commit 提交的了代码 – 在版本区 (本地仓库) 全部撤回并回到远程仓库最新的状态(不保存代码修改)1234# 回退到上一版本git reset --hard HEAD^# 指定 commit id 回退git reset --hard commit_id
拉回工作区并保存修改。只撤销 commit 和 add(保存代码修改)123git reset --mixed HEAD^# 或者git reset HEAD^
撤销 commit 但是不撤销 add(保存代码修 ...
体验地表最强 TTS —— 微软 TTS
前言「微软文本转语音」Azure Text to Speech 是一个能将文字转换成真人般自然朗读的云服务,相比同类 TTS 强大之处在于,它借助 AI 神经网络技术,让合成的语音拥有媲美真人的表现力,实现人声语调与情感匹配,朗读时能表现出高兴、悲伤、新闻广播、客服、恐惧、耳语等情感。
可以说是当前我用过的最好的 TTS 工具了。不过服务是付费的,官方开放了一个免费的 在线 DEMO 演示。可以让用户随便输入文字实现在线试听 (但字数有限制,且试听无法保存)。于是,高手们纷纷各显神通,给我们带来了几款如微软语音合成助手、Edge-TTS-record、微软 TTS 下载按钮脚本插件等免费工具,可以帮助你将一大段文字转换成音频导出 mp3 或录制成 wav 保存下来,用于其他地方。
本文使用的是 python 库:edge-tts
安装1pip install edge-tts
使用 基本使用
使用edge-tts 命令
1edge-tts --text "Hello, world!" --write-media hello.mp3
使用edge-play ...