PIL:Python Imaging Library。Python平台的图像处理标准库。
PIL功能非常强大,但API却非常简单易用
其最新版本是pillow,支持Python3.x
requests
虽然内置的urllib模块可以访问网络资源。但是比较麻烦更好的是使用第三方库requests
安装:
pip install requests
get——请求
import requests r=requests.get(url) #此时既可以获得网页的资源。 r.status_code 访问状态 200为成功 r.text 源码 r.url r.encoding r.content 获得内容的bytes对象 b'xxxxxxxxxxxx' r.headers r.cookies
如果要访问带参数的url,还需要传入一个dict作为params的参数。
import requests dict={'q': 'python', 'cat': '1001'} r=requests.get('https://www.douban.com/search',params=dict) r.url #'https://www.douban.com/search?q=python&cat=1001'
requests对于特定类型的响应可以直接获得,例如对于json,可以直接用r.json()获得数据
r=requests.get(json型的url) r.json() #获得json数据
要传入header,直接传入一个dict作为headers的参数
import requests dict={'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit'} r=requests.get(url,headers=dict)
Post
发送Post请求,只需要把get()方法变为post(),然后把数据作为data的参数传入即可。
import requests r=requests.post(url,data=数据)
要传递json数据,可以直接传入作为json的参数。
import requests d={'key':'value',~~~~~} p=requests.post(url,json=d) #内部会对d自动进行json序列化
上传文件,文件的编码格式作为files的参数。
import requests #务必使用'rb'即二进制模式读取,这样获取的bytes长度才是文件的长度。 update_file=open('xxxx.xls','rb') p=requests.post(url,files=update_file)
设置请求超时时间
传入以秒为单位的时间作为timeout的参数
r=requests.get(url,timeout=5)
chardet——检测bytes的编码
安装: pip install chardet
使用 import chardet
chardet.dettect(bytes)
得到bytes的编码时就可以用decode('编码') 转换成字符串
virtualenv
virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。
要开发一个新的项目,需要一套独立的Python运行环境,可以这么做:
第一步,创建目录:
Mac:~ michael$ mkdir myproject Mac:~ michael$ cd myproject/ Mac:myproject michael$
第二步,创建一个独立的Python运行环境,命名为venv
:
Mac:myproject michael$ virtualenv --no-site-packages venv Using base prefix '/usr/local/.../Python.framework/Versions/3.4' New python executable in venv/bin/python3.4 Also creating executable in venv/bin/python Installing setuptools, pip, wheel...done.
命令virtualenv
就可以创建一个独立的Python运行环境,我们还加上了参数--no-site-packages
,这样,已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境。
新建的Python环境被放到当前目录下的venv
目录。有了venv
这个Python环境,可以用source
进入该环境:
Mac:myproject michael$ source venv/bin/activate (venv)Mac:myproject michael$
注意到命令提示符变了,有个(venv)
前缀,表示当前环境是一个名为venv
的Python环境。
下面正常安装各种第三方包,并运行python
命令:
(venv)Mac:myproject michael$ pip install jinja2 ... Successfully installed jinja2-2.7.3 markupsafe-0.23 (venv)Mac:myproject michael$ python myapp.py ...
在venv
环境下,用pip
安装的包都被安装到venv
这个环境下,系统Python环境不受任何影响。也就是说,venv
环境是专门针对myproject
这个应用创建的。
退出当前的venv
环境,使用deactivate
命令:
图形界面——Tkinter
Tk是一个图形库,支持多个操作系统,使用Tcl语言开发;
Tk会调用操作系统提供的本地GUI接口,完成最终的GUI。
所以,我们的代码只需要调用Tkinter提供的接口就可以了。
使用过程:
#1 导入包tkinter from tkinter import * #2 创建类Application,这是所有widge的父容器 class Application(Frame): def __init__(self,master=None): Frame.__init__(self,master) self.pack() #pack() 是把widge加入到父容器内 self.createWidge() #在这个函数里面写自己的GUI def createWidge(self): pass #3 实例化 App=Application() App.master.title("设置标题") App.mainloop() #主消息循环