3.常用第三方库

案例:https://gitee.com/luckSnow/knowledge-python.git

0.virtualenv

在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip安装到Python3的site-packages目录下。

如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?

这种情况下,每个应用可能需要各自拥有一套"独立"的Python运行环境。virtualenv就是用来为一个应用创建一套"隔离"的Python运行环境。

1.用pip安装virtualenv

pip3 install virtualenv

2.假定我们要开发一个新的项目,需要一套独立的Python运行环境,可以这么做

第一步,创建目录:

mkdir myproject
cd myproject/

第二步,创建一个独立的Python运行环境,命名为venv,目录就在cd myproject目录下面

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/pythonInstalling setuptools, pip, wheel...done.

命令virtualenv就可以创建一个独立的Python运行环境,我们还加上了参数–no-site-packages, 这样,已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的"干净"的Python运行环境。

3.激活环境

新建的Python环境被放到当前目录下的venv目录。有了venv这个Python环境,可以用source进入该环境

source venv/bin/activate
## 输出结果
(venv)myproject michael$

注意到命令提示符变了,有个(venv)前缀,表示当前环境是一个名为venv的Python环境。

4.安装各种第三方包,并运行python命令:

(venv)myproject michael$ pip install jinja2
...Successfully installed jinja2-2.7.3 markupsafe-0.23

(venv)myproject michael$ python myapp.py
...

在venv环境下,用pip安装的包都被安装到venv这个环境下,系统Python环境不受任何影响。也就是说,venv环境是专门针对myproject这个应用创建的。

5.退出环境 退出当前的venv环境,使用deactivate命令:

(venv)myproject michael$ deactivate 
myproject michael$

此时就回到了正常的环境,现在pip或python均是在系统Python环境下执行。

完全可以针对每个应用创建独立的Python运行环境,这样就可以对每个应用的Python环境进行隔离。

virtualenv是如何创建"独立"的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境, 用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。

6.小结

virtualenv为应用提供了隔离的Python运行环境,解决了不同应用间多版本的冲突问题。

1. chardet

字符串编码一直是令人非常头疼的问题,尤其是我们在处理一些不规范的第三方网页的时候。 虽然Python提供了Unicode表示的str和bytes两种数据类型,并且可以通过encode()和decode()方法转换, 但是,在不知道编码的情况下,对bytes做decode()不好做。

对于未知编码的bytes,要把它转换成str,需要先"猜测"编码。猜测的方式是先收集各种编码的特征字符,根据特征字符判断,就能有很大概率"猜对"。

当然,我们肯定不能从头自己写这个检测编码的功能,这样做费时费力。chardet这个第三方库正好就派上了用场。用它来检测编码,简单易用。

如果安装了Anaconda,chardet就已经可用了。否则,需要在命令行下通过pip安装:

pip install chardet

chardet支持检测的编码列表请参考官方文档https://chardet.readthedocs.io/

使用chardet检测编码非常容易,chardet支持检测中文、日文、韩文等多种语言。

2.configparser

用于处理特定格式的文件,其本质还是利用open来操作文件。

配置文件的格式:使用"[]"内包含 section,section下为类似key-value的配置内容(例如:samba配置文件)

# 这里是注释
[global]	#节点1 section
workgroup = WORKGROUP	# 配置键值(key-value)
security = share
maxlog = 50

[public]  #节点2 section
comment = stuff
public = True
pi = 3.1415926

3. jieba

Python中最好的中文分词器。https://github.com/fxsjy/jieba

  • 详细内容,看文档即可。
  • 有多语言的支持。

4. matplotlib。

数据工具集,可以生成可视化图片。

5. numpy

一个用python实现的科学计算,包括:

1、一个强大的N维数组对象Array;

2、比较成熟的(广播)函数库;

3、用于整合C/C++和Fortran代码的工具包;

4、实用的线性代数、傅里叶变换和随机数生成函数。

numpy和稀疏矩阵运算包scipy配合使用更加方便。

6. pandas

相比于numpy ,pandas在数据分析中更加重要,使用也更加广泛。

pandas是对numpy的二次封装的产物,简化了numpy的使用。

安装: pip3 install pandas

MySQL导出csv文件:mysqldump -u 用户名 -p -t -T d:// 数据库名 表名 –fields-terminated-by=','

pandas常见的数据类型

pandas类型 csv类型
object string
int int
float float
datetime time
bool boolean

7.paramiko

paramiko模块,基于SSH用于连接远程服务器并执行相关操作。

paramoko源码: https://github.com/paramiko/paramiko

文档paramiko.docx

功能: SSHClient:基于账号密码&公钥密钥连接

8.Pillow

是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用

教程:https://www.liaoxuefeng.com/wiki/1016959663602400/1017785454949568

官网: https://pillow.readthedocs.org/

参考源码

  • https://github.com/michaelliao/learn-python3/blob/master/samples/packages/pil/use_pil_resize.py
  • https://github.com/michaelliao/learn-python3/blob/master/samples/packages/pil/use_pil_blur.py
  • https://github.com/michaelliao/learn-python3/blob/master/samples/packages/pil/use_pil_draw.py

9.psutil

psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。

它主要应用于系统监控,分析和限制系统资源及进程的管理。它实现了同等命令行工具提供的功能,

如ps、top、lsof、netstat、 ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。

目前支持32位和64位的Linux、 Windows、OS X、FreeBSD和Sun Solaris等操作系统,

教程:https://www.liaoxuefeng.com/wiki/1016959663602400/1183565811281984

10.requests

requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的:

python的标准库urllib2提供了大部分需要的HTTP功能,但是API太逆天了,一个简单的功能就需要一大堆代码。

我也看了下requests的文档,确实很简单,适合我这种懒人。下面就是一些简单指南。

教程: https://www.w3cschool.cn/requests2/

源码: https://github.com/psf/requests

  • 官方文档requests的具体安装过程:http://docs.python-requests.org/en/latest/user/install.html#install
  • requests的官方指南文档:http://docs.python-requests.org/en/latest/user/quickstart.html
  • requests的高级指南文档:http://docs.python-requests.org/en/latest/user/advanced.html#advanced

11.seaborn

Seaborn是Python基于matplotlib的数据可视化工具。它提供了很多高层封装的函数,帮助数据分析人员快速绘制美观的数据图形,而避免了许多额外的参数配置问题。

安装:pip3 install seaborn

官方demo:http://seaborn.pydata.org/examples/index.html

12.sklearn

传统的机器学习任务从开始到建模的一般流程是:获取数据 -> 数据预处理 -> 训练建模 -> 模型评估 -> 预测,分类。

本文我们将依据传统机器学习的流程,看看在每一步流程中都有哪些常用的函数以及它们的用法是怎么样的。希望你看完这篇文章可以最为快速的开始你的学习任务。

安装: pip install sklearn ,官网: http://scikit-learn.org/stable/

在线word:https://www.cnblogs.com/cczlovexw/p/15338009.html

文档:sklearn.docx

13.爬虫

  1. 这里我将爬虫分为两类:定向爬虫和广域爬虫
  2. python3常见的爬虫技术:
    1. 官方提供:urllib
    2. 第三方:requests 和 beautifulSoup4

文章信息

张雪随笔
master
Homepage
Issues
Download

This Software is under the terms of The Unlicense.