python (小)模块简介

本文汇总了Python编程中常用的技巧和库的使用方法,包括六库兼容性支持、UUID唯一ID生成、Base64编码、命令行参数解析、网络请求处理、文件I/O操作等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python汇总篇

six: Python2和3的兼容库

Six 提供了一些简单的工具用来封装 Python 2 和 Python 3 之间的差异性
Six provides simple utilities for wrapping over differences between Python 2 and Python 3.
The name, “six”, comes from the fact that 2*3 equals 6. Why not addition? Multiplication is more powerful, and, anyway, “five” has already been snatched away.
参考:http://www.itpub.net/thread-1709185-1-1.html

uuid: Python使用UUID库生成唯一ID

UUID是128位的全局唯一标识符,通常由32字节的字符串表示。可以保证时间和空间的唯一性。它通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生成ID的唯一性。
公司:uuid.uuid4().hex 由伪随机数得到,有一定的重复概率,该概率可以计算出来。 .hex是16进制

延展:

Python使用UUID库生成唯一ID
python中hex,oct,chr,ord函数讲解
UUID 和 GUID 的区别

random

http://blog.youkuaiyun.com/daduryi/article/details/77417509我自己的#随机#

json

json_str = json.dumps(obj) obj = json.loads(json_str)
json.dump(obj, f) obj = json.load(f) obj
dumps的参数separators=(‘,’, ‘:’)紧凑型jison,boqing在搞universilink时只能解析紧凑的

platform

platform.system() == ‘Linux’

traceback

traceback.format_exc()

request

base64

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法;Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息;
优点:速度快,ascii字符,肉眼不可理解
缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合

>>> import base64
>>> s = '我是字符串'
>>> a = base64.b64encode(s)
>>> print a
ztLKx9fWt/u0rg==
>>> print base64.b64decode(a)
我是字符串

Python:字符串

http://blog.youkuaiyun.com/daduryi/article/details/71158303 后期搬出去
如何去掉字符串中不需要的字符strip(‘-+*’)/lstrip()/rstrip()/切片分段+/replace/sub/translate

'/'.join([QiniuUtil.CDN_URL, path])         #sub
s.split(sep=None, maxsplit=-1)              #以sep为参数对字符串切割(默认为空格),返回list   #注意 ''.split(',')返回['']
s.strip('xx')       # 去除s前后的xx,默认为空格 lstrip('xx')、rstrip('xx'),当要去除的为’_medal’时,会出问题,是下划线的锅

future

from future import absolute_import

这样局部导入就不会覆盖全局导入,本地导入采用相对引用

from .celery import Celery      # 是导入当前路径下celery的Celery
from celery import Celery       # 是导入第三方的全局的celery模块下的Celery

datetime

http://blog.youkuaiyun.com/daduryi/article/details/77418000我自己的#时间#

time

http://blog.youkuaiyun.com/daduryi/article/details/77418000我自己的#时间#

argparse

argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。argparse模块的作用是用于解析命令行参数,例如python parseTest.py input.txt output.txt –user=name –port=8080。
[简书]argparser模块学习

requests

使用 Requests 发送网络请求
http://docs.python-requests.org/zh_CN/latest/user/quickstart.html

1. 返回的responses对象

r = requests.get(‘url’)会返回一个response对象. 该url必须把http等写上
r的常用方法或属性有:
r.json()有一个内置的 JSON 解码器
r.content 以字节的方式访问请求响应体,对于非文本请求
r.text 根据r.encoding的值自动解码, 并返回响应内容,大多数 unicode 字符集都能被无缝地解码
r.url
r.request 返回请求方式
r.status_code响应状态码r.status_code == requests.codes.ok, 如果发送了一个错误请求(一个 4XX 客户端错误,或者 5XX 服务器错误响应),我们可以通过 Response.raise_for_status() 来抛出异常
r.ok
r.reason
r.headers 字典, 且key的大小写不敏感
r.cookies 获得响应的cookies, 字典
r.apparent_encoding显示返回的编码
r.historyRequests 会自动处理所有重定向。可以使用响应对象的 history 方法来追踪重定向。从老到近.

2. 发送请求

r = requests.get(‘url’)
POST, PUT,DELETE,HEAD 以及 OPTIONS

3. 传递url参数

url?参数, headers

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>>headers = {'user-agent': 'my-app/0.0.1'}
>>> r = requests.get("http://httpbin.org/get", params=payload(参数), headers=headers(头), data=payload(POST), json=payload(json), cookies=cookies(字典))

timeout=设置超时,生产环境必须有
allow_redirects=False, 禁止重定向

还可以传文件,
**Cookie 的返回对象为 RequestsCookieJar,它的行为和字典类似,但界面更为完整,适合跨域名跨路径使用。你还可以把 Cookie Jar 传到 Requests 中
**你还可以为 data 参数传入一个元组列表。在表单中多个元素使用同一 key 的时候,这种方式尤其有效, payload = ((‘key1’, ‘value1’), (‘key1’, ‘value2’))
**headers的坑有.netrc, 重定向, 代理授权
**在罕见的情况下,你可能想获取来自服务器的原始套接字响应,那么你可以访问 r.raw。 如果你确实想这么干,那请你确保在初始请求中设置了 stream=True。

4. 错误与异常

遇到网络问题(如:DNS 查询失败、拒绝连接等)时,Requests 会抛出一个 ConnectionError 异常。

如果 HTTP 请求返回了不成功的状态码, Response.raise_for_status() 会抛出一个 HTTPError 异常。

若请求超时,则抛出一个 Timeout 异常。

若请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects 异常。

所有Requests显式抛出的异常都继承自 requests.exceptions.RequestException 。

5. 高级用法: 会话/ssl证书验证/响应体内容工作流/持久连接/流式上传下载/块编码/事件挂钩/身份验证/代理/阻塞与非阻塞/等等

http://docs.python-requests.org/zh_CN/latest/user/advanced.html#advanced

StringIO和BytesIO

This module implements a file-like class, StringIO, that reads and writes a string buffer (also known as memory files). See the description of file objects for operations (section File Objects)
很多时候,数据读写不一定是文件,也可以在内存中读写。
将像文本一样使用StringIO对其进行处理,而二进制则使用BytesIO

from io import StringIO, BytesIO
output = StringIO()
output.write('First line.\n')
......

StringIO还有一个对应的c语言版的实现,它有更好的性能,但是稍有一点点的区别,cStringIO没有len和pos属性。(还有,cStringIO不支持Unicode编码)

在python2.x中导入模块方法:
from StringIO import StringIO
在python2.x中它还有个孪生兄弟,运行速度比它快,用c实现的
from cStringIO import StringIO
在python3.x中,StringIO已经在io模块中了,导入方法
from io import StringIO (推荐用)

PlL

简单入门 建议所有图片处理都try起来, 没有save的用with Image.open(infile) as im:包起来
官方英文4.Xhttps://pillow.readthedocs.io/en/4.3.x/handbook/tutorial.html
官方中文V2.4.0http://pillow-cn.readthedocs.io/zh_CN/latest/index.html

from PIL import Image
Image.open(infile.jpg).save(outfile.png)                # 转码
im.thumbnail(size)                                      # 缩略图
print(infile, im.format, "%dx%d" % im.size, im.mode)    # 图片信息
region = im.crop(box)                                   # 复制出一块, 有惰性 有时需要结合im.load()
region = region.transpose(Image.ROTATE_180)             # 处理(转动)
im.paste(region, box)                                   # 粘贴
r, g, b = im.split(); im = Image.merge("RGB", (b, g, r))# 变色(滤镜差不多)
out = im.resize((128, 128))                             #重置宽高
out = im.rotate(45) # degrees counter-clockwise         #旋转(逆时针)
out = im.transpose(Image.FLIP_LEFT_RIGHT)       # 换位
out = im.transpose(Image.FLIP_TOP_BOTTOM)
out = im.transpose(Image.ROTATE_90)
out = im.transpose(Image.ROTATE_180)
out = im.transpose(Image.ROTATE_270)
im = Image.open("hopper.ppm").convert("L")      # Color transforms (modes)
Image enhancement图片增强
这里写代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值