Python 中常用 Excel 操作库如下:

  • pandas:数据处理是 pandas 的立身之本,Excel 作为 pandas 输入/输出数据的容器。https://www.pypandas.cn/docs/
  • xlutils:提供了一些 Excel 的实用操作,比如复制、拆分、过滤等,通常与 xlrd、xlwt 一起使用。缺点是仅支持 xls 文件。https://pypi.org/project/xlutils/
  • XlsxWriter:拥有丰富的特性,支持图片/表格/图表/筛选/格式/公式等,功能与openpyxl相似,优点是相比 openpyxl 还支持 VBA 文件导入,迷你图等功能,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始。https://xlsxwriter.readthedocs.io/
  • openpyxl:简单易用,功能广泛,单元格格式/图片/表格/公式/筛选/批注/文件保护等等功能应有尽有,图表功能是其一大亮点,缺点是对 VBA 支持的不够好。https://openpyxl.readthedocs.io/en/latest/tutorial.html
  • xlwings:可结合 VBA 实现对 Excel 编程,强大的数据输入分析能力,同时拥有丰富的接口,结合 pandas/numpy/matplotlib 轻松应对 Excel 数据处理工作。https://docs.xlwings.org/en/stable/
阅读全文 »

Python 提供了 python-docx 库操作 Word 文档。

安装 pip install python-docx

导入模块

1
2
3
4
5
6
7
8
9
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH, WD_PARAGRAPH_ALIGNMENT # 设置对象居中、对齐等。
from docx.enum.text import WD_TAB_ALIGNMENT, WD_TAB_LEADER # 设置制表符等
from docx.enum.text import WD_LINE_SPACING # 设置行间距
from docx.shared import Inches # 设置图像大小
from docx.shared import Pt # 设置像素、缩进等
from docx.shared import RGBColor # 设置字体颜色
from docx.shared import Length # 设置宽度
from docx.oxml.ns import qn
阅读全文 »

概述

Python 有三种方法解析XML:SAX,DOM以及 ElementTree:

  • DOM:DOM 方式会将整个 XML 读入内存,在内存中解析成一个树,通过对树的操作来操作 XML,该方式占用内存较大,解析速度较慢。

  • SAX:SAX 方式逐行扫描 XML 文档,边扫描边解析,占用内存较小,速度较快,缺点是不能像 DOM 方式那样长期留驻在内存,数据不是长久的,事件过后,若没保存数据,数据会丢失。

  • ElementTree:ElementTree 方式几乎兼具了 DOM 方式与 SAX 方式的优点,占用内存较小、速度较快、使用也较为简单。

阅读全文 »

Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:

  • json.dumps(): 对数据进行编码。
  • json.loads(): 对数据进行解码。

json 模块主要提供了 dumpdumpsloadloads 方法对 JSON 数据进行编解码。

阅读全文 »

基本使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import sqlite3

# 连接数据库
conn = sqlite3.connect('test.db')

# 创建游标
cs = conn.cursor()

## 增删改查操作

# 关闭 cursor
cs.close()

# 关闭连接
conn.close()
阅读全文 »

5 种方式操作 MySQL。

MySQL-python
MySQL-python 也称 MySQLdb,基于 C 库开发,曾经是一个十分流行的 MySQL 驱动,具有出色的性能,但其早已停更,仅支持 Python2,不支持 Python3,现在基本不推荐使用了,取而代之的是它的衍生版。

mysqlclient
MySQLdb 的 Fork 版本,完全兼容 MySQLdb,支持 Python3,它是 Django ORM 的依赖工具,如果你喜欢用原生 SQL 操作数据库,那么推荐使用它。

PyMySQL
PyMySQL 采用纯 Python 开发,兼容 MySQLdb,性能不如 MySQLdb,安装方便,支持 Python3。

peewee
peewee 是一个流行的 ORM 框架,实现了对象与数据库表的映射,兼容多种数据库,我们无需知道原生 SQL,只要了解面向对象的思想就可以简单、快速的操作相应数据库,支持 Python3。

SQLAlchemy
SQLAlchemy 是一个 ORM 框架,同时也支持原生 SQL,支持 Python3,它类似于 Java 的 Hibernate 框架。

阅读全文 »

Process 类

multiprocessing 模块通过创建一个 Process 对象然后调用它的 start() 方法来生成进程,Process 与 threading.Thread API 相同。

进程对象,表示在单独进程中运行的活动。

1
2
multiprocessing.Process(group=None, target=None, name=None, 
args=(), kwargs={}, *, daemon=None)

参数:

  • group:仅用于兼容 threading.Thread,应该始终是 None。

  • target:由 run() 方法调用的可调用对象。

  • name:进程名。

  • args:目标调用的参数元组。

  • kwargs:目标调用的关键字参数字典。

  • daemon:设置进程是否为守护进程,如果是默认值 None,则该标志将从创建的进程继承。

    阅读全文 »

线程简介

每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

每个线程都有他自己的一组CPU寄存器,称为线程的上下文,该上下文反映了线程上次运行该线程的CPU寄存器的状态。

指令指针和堆栈指针寄存器是线程上下文中两个最重要的寄存器,线程总是在进程得到上下文中运行的,这些地址都用于标志拥有线程的进程地址空间中的内存。

  • 线程可以被抢占(中断)。
  • 在其他线程正在运行时,线程可以暂时搁置(也称为睡眠) – 这就是线程的退让。

线程可以分为:

  • 内核线程:由操作系统内核创建和撤销。
  • 用户线程:不需要内核支持而在用户程序中实现的线程。

Python3 线程中常用的两个模块为:

  • _thread
  • threading(推荐使用)
阅读全文 »

Python 数学模块

  • math 提供了对 C 标准定义的数学函数的访问(不适用于复数)
  • cmath 提供了一些关于复数的数学函数
  • decimal 为快速正确舍入的十进制浮点运算提供支持
  • fractions 为分数运算提供支持
  • random 实现各种分布的伪随机数生成器
  • statistics 提供了用于计算数字数据的数理统计量的函数

比较常用的模块:mathdecimalrandom

阅读全文 »

os模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import os

# 返回当前的工作目录
print(os.getcwd())

# 修改当前的工作目录
os.chdir('/server/accesslogs')

# 执行系统命令 mkdir
os.system('mkdir today')

# 显示所有模块,方法
dir(os)

# 显示帮助
help(os)
阅读全文 »

在Python中,星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法 “在变量前添加单个星号或两个星号”,实现多参数的传入或变量的拆解。

* 该位置接受任意多个非关键字(non-keyword)参数,在函数中将其转化为元组(1,2,3,4)

** 该位置接受任意多个关键字(keyword)参数,在函数 ** 位置上转化为字典 [key:value, key:value]

阅读全文 »

装饰器(Decorators)是 Python 的一个重要部分。简单地说:装饰器是修改其他函数的功能的函数。

一切皆对象

首先我们来理解下 Python 中的函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def hi(name="Python"):
return "hi " + name

print(hi())
# output: 'hi Python'

# 可以将一个函数赋值给一个变量
# # 注意没有 使用小括号,并不是在调用hi函数
greet = hi

print(greet())
# output: 'hi Python'

# 删掉旧的hi函数
del hi
print(hi())
#outputs: NameError

print(greet())
#outputs: 'hi Python'
阅读全文 »

命名空间

  • 内置名称(built-in names), Python 语言内置的名称,比如函数名 abs、char 和异常名称 BaseException、Exception 等等。
  • 全局名称(global names),模块中定义的名称,记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。
  • 局部名称(local names),函数中定义的名称,记录了函数的变量,包括函数的参数和局部定义的变量。(类中定义的也是)

types_namespace-1.png

阅读全文 »

面向对象三大特性

封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式,提高复用性和安全性。

继承:一个类继承一个基类便可拥有基类的属性和方法,可提高代码的复用性。

多态:父类定义的引用变量可以指向子类的实例对象,提高了程序的拓展性。

Python面向对象简介

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 方法:类中定义的函数。
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
  • 局部变量:定义在方法中的变量,只作用于当前实例的类。
  • 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟 是一个(is-a) 关系。
  • 实例化:创建一个类的实例,类的具体对象。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
阅读全文 »