2022年9月10日

Python: 二进制数据服务

官方文档 二进制数据服务 本章介绍的模块提供了一些操作二进制数据的基本服务操作。 有关二进制数据的其他操作,特别是与文件格式和网络协议有关的操作,将在相关章节中介绍。 下面描述的一些库 文本处理服务 也可以使用 ASCII 兼容的二进制格式(例如 re )或所有二进制数据(例如 difflib )。 另外,请参阅 Python 的内置二进制数据类型的文档 二进制序列类型 --- bytes, bytearray, memoryview 。 struct --- 将字节串解读为打包的二进制数据 函数和异常 格式字符串 字节顺序,大小和对齐方式 格式字符 例子 类 codecs --- 编解码器注册和相关基类 编解码器基类 错误处理方案 无状态的编码和解码 增量式的编码和解码 IncrementalEncoder 对象 IncrementalDecoder 对象 流式的编码和解码 StreamWri…
2022年9月9日

Python: 使用struct模块处理二进制

官方文档 有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体. struct模块中最重要的三个函数是pack(), unpack(), calcsize() pack(fmt, v1, v2, ...)     按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流) unpack(fmt, string)       按照给定的格式(fmt)解析字节流string,返回解析出来的tuple calcsize(fmt)                 计算给定的格式(fmt)占用多少字节的内存 struct中支持的格式如下表: Format C Type Python 字节数 x pad byte no value 1 c…
2022年9月7日

Python: 描述器 __get__(),__set__() 和 __delete__()

官方文档 描述器的应用案例:Python内置的 property() # 描述器练习 class RevealAccess(object): def __init__(self, val): self.val = val def __get__(self, obj, objtype=None): print('Retrieving', self.val) return self.val def __set__(self, obj, val): print('Updating', val) self.val = val class Test(object): def __init__(self, val, get=False): self.val = val if get: self.get() def get(self): return self.val class MyClass(object): r =…
2022年9月5日

Python: 格式化 占位符

占位符,顾名思义就是插在输出里站位的符号。占位符是绝大部分编程语言都存在的语法, 而且大部分都是相通的, 它是一种非常常用的字符串格式化的方式。 常用占位符的含义 s : 获取传入对象的__str__方法的返回值,并将其格式化到指定位置 r : 获取传入对象的__repr__方法的返回值,并将其格式化到指定位置 c : 整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置 o : 将整数转换成 八 进制表示,并将其格式化到指定位置 x : 将整数转换成十六进制表示,并将其格式化到指定位置 d : 将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置 e : 将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e) E : 将整数、浮点数转换成科学计数法,并将…
2022年9月5日

Python: 格式化字符串的4种方式

目录: Python格式化字符串的4中方式 一:%号 二:str.format 三:f-Strings 四:标准库模板 五:总结四种方式的应用场景 Python格式化字符串的4种方式 一:%号 ​ %号格式化字符串的方式从Python诞生之初就已经存在,时至今日,python官方也并未弃用%号,但也并不推荐这种格式化方式。 # 1、格式的字符串(即%s)与被格式化的字符串(即传入的值)必须按照位置一一对应 # ps:当需格式化的字符串过多时,位置极容易搞混 print('%s asked %s to do something' % ('egon', 'lili')) # egon asked lili to do something print('%s asked %s to do something' % ('lili', 'egon')) # lili asked egon to do somet…
2022年9月5日

Python: 魔术方法

magic method -- 魔术方法   special method 的非正式同义词 。 special method -- 特殊方法   一种由 Python 隐式调用的方法,用来对某个类型执行特定操作例如相加等等。这种方法的名称的首尾都为双下划线。 文档: 特殊方法的文档参见 特殊方法名称。 Python 常用指引中的 描述器使用指南。 Python中的魔术方法 Catalogue 1. 1.魔术方法简介 2. 2.不同类型的魔术方法 2.1. 2.1 用于对象构造析构的魔术方法 2.2. 2.2 用于控制属性读写的魔术方法 2.3. 2.3 对象的表示和描述 2.4. 2.4 在定制类对象间支持使用运算符号 2.4.1. 2.4.1支持比较运算符号 2.4.2. 2.4.2支持一元运算符 2.4.3. 2.4.3支持算术运算符 2.4.4. 2.4.4反射算术运算符 2.4.5. 2.4.5自…
2022年9月5日

Python: Requests 基本用法

首先,确认已安装 requests 从一些简单的示例开始吧。 发送请求 使用 Requests 发送网络请求非常简单。 一开始要导入 Requests 模块: >>> import requests 然后,尝试获取某个网页。本例子中,我们来获取 Github 的公共时间线: >>> r = requests.get('https://api.github.com/events') 现在,我们有一个名为 r 的 Response 对象。我们可以从这个对象中获取所有我们想要的信息。 Requests 简便的 API 意味着所有 HTTP 请求类型都是显而易见的。例如,你可以这样发送一个 HTTP POST 请求: >>> r = requests.post('http://httpbin.org/post', data = {'ke…
2022年9月5日

Python: Requests 处理超大文件

文章目录 常规下载 下载超大文件解决方式 第一种方式 第二种方式 在我们开发过程中可能会遇到在下载文件的时候需要下载超大的文件。那这时候怎么办才好呢 直接全部下载的话, 文件过大, 可能会造成内存不足等问题。 如果你的requests模块没有安装的话就使用pip install requests安装一下。 常规下载 pythonimport requests url = 'http://xxx.com/xxx.zip' response = requests.get(url) if response.status_code == 200: with open('./xx.zip', 'wb') as fp: fp.write(response.content) print("下载成功") 这种方式下载在下载小文件的时候会很快,但是在下载大点的文件的时候就会变得慢了。 下载超大…
2022年9月5日

Python: Requests 官方文档 基本使用

requests官方文档 1. requests基础 1.1 requests简单请求 import requests as rq base_url = 'http://httpbin.org/' # "httpbin.org" is A simple HTTP Request & Response Service r = rq.get(base_url + 'get') # 注意url不能省略scheme协议-http或https print(r.text) print(r.status_code) print(r.cookies) { "args": {}, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Connection": "close", "Host": "httpbin.org", "User…
2022年9月2日

Python: 引号嵌套

我们有时候需要在引号中嵌套引号。例如输入一段完整的代码print(str+'你好'),而代码中有引号。 办法有三种: 1.都是双引号时,前加转义字符 \ 2.都是单引号时,前加转义字符 \ 3.单引号中嵌套双引号法 4.双引号嵌套单引号 代码如下: print("print(str+\"你好\")") print('print(str+\'你好\')') print('print(str+"你好")') print("print(str+'你好')")…