《Python编程快速上手—让繁琐工作自动化》是畅销Python编程图书,帮助你通过编程快速实现工作自动化。在本书中,你将学习利用Python编程,在几分钟内完成手工需要几小时的工作,而事先却无需具备编程经验。一旦掌握了编程的基础知识,你就可以毫不费力地创建Python程序,完成高效的自动化工作,包括:

●在一个文件或多个文件中搜索文本;

●创建、更新、移动和重命名文件和文件夹;

●在任意大小的Excel电子表格中更新和格式化数据;

●拆分、合并PDF文件,以及如何加水印和加密;

●发送提醒邮件和文本通知;

●填写在线表格。

本书的作者AlSweigart是一位杰出Python程序员,他还是《Python密码学编程》、《Python游戏编程快速上手》和《Python和Pygame游戏开发指南》的作者。


内容简介

如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。

本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。

本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。

AlSweigart,是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python书籍,包括《Python密码学编程》、《Python游戏编程快速上手》和《Python和Pygame游戏开发指南》。

目录

第一部分Python编程基础

第1章Python基础3

1.1在交互式环境中输入表达式3

1.2整型、浮点型和字符串数据类型6

1.3字符串连接和复制6

1.4在变量中保存值7

1.4.1赋值语句7

1.4.2变量名9

1.5第一个程序9

1.6程序剖析11

1.6.1注释11

1.6.2print()函数11

1.6.3input()函数11

1.6.4打印用户的名字12

1.6.5len()函数12

1.6.6str()、int()和float()函数13

1.7小结15

1.8习题15

第2章控制流17

2.1布尔值18

2.2比较操作符19

2.3布尔操作符20

2.3.1二元布尔操作符20

2.3.2not操作符21

2.4混合布尔和比较操作符21

2.5控制流的元素22

2.5.1条件22

2.5.2代码块22

2.6程序执行23

2.7控制流语句23

2.7.1if语句23

2.7.2else语句24

2.7.3elif语句25

2.7.4while循环语句30

2.7.5恼人的循环31

2.7.6break语句33

2.7.7continue语句34

2.7.8for循环和range()函数37

2.7.9等价的while循环39

2.7.10range()的开始、停止和

步长参数39

2.8导入模块40

fromimport语句41

2.9用sys.exit()提前结束程序41

2.10小结41

2.11习题41

第3章函数43

3.1def语句和参数44

3.2返回值和return语句45

3.3None值46

3.4关键字参数和print()47

3.5局部和全局作用域48

3.5.1局部变量不能在全局作用

域内使用48

3.5.2局部作用域不能使用其他

局部作用域内的变量49

3.5.3全局变量可以在局部作用

域中读取49

3.5.4名称相同的局部变量和全局

变量50

3.6global语句50

3.7异常处理52

3.8一个小程序:猜数字54

3.9小结55

3.10习题56

3.11实践项目56

3.11.1Collatz序列56

3.11.2输入验证57

第4章列表59

4.1列表数据类型59

4.1.1用下标取得列表中的

单个值60

4.1.2负数下标61

4.1.3利用切片取得子列表61

4.1.4用len()取得列表的长度62

4.1.5用下标改变列表中的值62

4.1.6列表连接和列表复制62

4.1.7用del语句从列表中

删除值63

4.2使用列表63

4.2.1列表用于循环64

4.2.2in和notin操作符65

4.2.3多重赋值技巧66

4.3增强的赋值操作66

4.4方法67

4.4.1用index()方法在列表中

查找值67

4.4.2用app()和insert()方法在

列表中添加值68

4.4.3用remove()方法从列表中

删除值69

4.4.4用sort()方法将列表中的值

排序69

4.5例子程序:神奇8球和列表70

4.6类似列表的类型:字符串和

元组71

4.6.1可变和不可变数据类型72

4.6.2元组数据类型73

4.6.3用list()和tuple()函数来

转换类型74

4.7引用75

4.7.1传递引用76

4.7.2copy模块的copy()和

deepcopy()函数77

4.8小结78

4.9习题78

4.10实践项目79

4.10.1逗号代码79

4.10.2字符图网格79

第5章字典和结构化数据81

5.1字典数据类型81

5.1.1字典与列表82

5.1.2keys()、values()和items()

方法83

5.1.3检查字典中是否存在键

或值84

5.1.4get()方法84

5.1.5setdefault()方法85

5.2漂亮打印86

5.3使用数据结构对真实世界建模87

5.3.1井字棋盘88

5.3.2嵌套的字典和列表91

5.4小结92

5.5习题93

5.6实践项目93

5.6.1好玩游戏的物品清单93

5.6.2列表到字典的函数,针对

好玩游戏物品清单94

第6章字符串操作95

6.1处理字符串95

6.1.1字符串字面量95

6.1.2双引号96

6.1.3转义字符96

6.1.4原始字符串96

6.1.5用三重引号的多行字符串97

6.1.6多行注释97

6.1.7字符串下标和切片98

6.1.8字符串的in和notin

操作符98

6.2有用的字符串方法99

6.2.1字符串方法upper()、lower()、

isupper()和islower()99

6.2.2isX字符串方法100

6.2.3字符串方法startswith()和

swith()102

6.2.4字符串方法join()和

split()102

6.2.5用rjust()、ljust()和center()

方法对齐文本103

6.2.6用strip()、rstrip()和lstrip()

删除空白字符104

6.2.7用pyperclip模块拷贝粘贴字

符串105

6.3项目:口令保管箱106

第1步:程序设计和数据结构106

第2步:处理命令行参数106

第3步:复制正确的口令107

6.4项目:在Wiki标记中添加无序

列表108

第1步:从剪贴板中复制和

粘贴108

第2步:分离文本中的行,并添加

星号109

第3步:连接修改过的行109

6.5小结110

6.6习题110

6.7实践项目111

表格打印111

第二部分自动化任务

第7章模式匹配与正则表达式115

7.1不用正则表达式来查找文本

模式116

7.2用正则表达式查找文本模式117

7.2.1创建正则表达式对象118

7.2.2匹配Regex对象118

7.2.3正则表达式匹配复习119

7.3用正则表达式匹配更多模式119

7.3.1利用括号分组119

7.3.2用管道匹配多个分组120

7.3.3用问号实现可选匹配121

7.3.4用星号匹配零次或多次121

7.3.5用加号匹配一次或多次122

7.3.6用花括号匹配特定次数122

7.4贪心和非贪心匹配123

7.5findall()方法124

7.6字符分类124

7.7建立自己的字符分类125

7.8插入字符和美元字符126

7.9通配字符126

7.9.1用点-星匹配所有字符127

7.9.2用句点字符匹配换行127

7.10正则表达式符号复习128

7.11不区分大小写的匹配128

7.12用sub()方法替换字符串129

7.13管理复杂的正则表达式129

7.14组合使用re.IGNORECASE、

re.DOTALL和re.VERBOSE130

7.15项目:电话号码和Email地址

提取程序130

第1步:为电话号码创建一个正则

表达式131

第2步:为email地址创建一个正则

表达式132

第3步:在剪贴板文本中找到所有

匹配132

第4步:所有匹配连接成一个

字符串,复制到剪贴板133

第5步:运行程序133

第6步:类似程序的构想134

7.16小结134

7.17习题134

7.18实践项目136

7.18.1强口令检测136

7.18.2strip()的正则表达式

版本136

第8章读写文件137

8.1文件与文件路径137

8.1.1Windows上的倒斜杠以及

OSX和Linux上的

正斜杠138

8.1.2当前工作目录139

8.1.3绝对路径与相对路径139

8.1.4用os.makedirs()创建新

文件夹140

8.1.5os.path模块140

8.1.6处理绝对路径和相对

路径141

8.1.7查看文件大小和文件夹

内容142

8.1.8检查路径有效性143

8.2文件读写过程144

8.2.1用open()函数打开文件145

8.2.2读取文件内容145

8.2.3���入文件146

8.3用shelve模块保存变量147

8.4用pprint.pformat()函数保存

变量148

8.5项目:生成随机的测验试卷

文件149

第1步:将测验数据保存在一个

字典中149

第2步:创建测验文件,并打乱

问题的次序150

第3步:创建答案选项151

第4步:将内容写入测验试卷和

答案文件151

8.6项目:多重剪贴板153

第1步:注释和shelf设置153

第2步:用一个关键字保存剪贴板

内容154

第3步:列出关键字和加载关键字的

内容154

8.7小结155

8.8习题155

8.9实践项目156

8.9.1扩展多重剪贴板156

8.9.2疯狂填词156

8.9.3正则表达式查找156

第9章组织文件157

9.1shutil模块158

9.1.1复制文件和文件夹158

9.1.2文件和文件夹的移动与

改名158

9.1.3永久删除文件和文件夹160

9.1.4用s2trash模块安全地

删除160

9.2遍历目录树161

9.7用zipfile模块压缩文件162

9.3.1读取ZIP文件163

9.3.2从ZIP文件中解压缩164

9.3.3创建和添加到ZIP文件164

9.4项目:将带有美国风格日期的

文件改名为欧洲风格日期165

第1步:为美国风格的日期创建一个

正则表达式165

第2步:识别文件名中的日期

部分166

第3步:构成新文件名,并对文件

改名167

第4步:类似程序的想法168

9.5项目:将一个文件夹备份到一个

ZIP文件168

第1步:弄清楚ZIP文件的

名称168

第2步:创建新ZIP文件169

第3步:遍历目录树并添加到

ZIP文件。170

第4步:类似程序的想法170

9.6小结171

9.7习题171

9.8实践项目171

9.8.1选择性拷贝171

9.8.2删除不需要的文件172

9.8.3消除缺失的编号172

第10章调试173

10.1抛出异常174

10.2取得反向跟踪的字符串175

10.3断言176

10.3.1在交通灯模拟中使用

断言177

10.3.2禁用断言178

10.4日志178

10.4.1使用日志模块178

10.4.2不要用print()调试180

10.4.3日志级别180

10.4.4禁用日志181

10.4.5将日志记录到文件182

10.5IDLE的调试器182

10.5.1Go183

10.5.2Step183

10.5.3Over183

10.5.4Out183

10.5.5Quit183

10.5.6调试一个数字相加的

程序184

10.5.7断点185

10.6小结187

10.7习题187

10.7实践项目188

调试硬币抛掷188

第11章从Web抓取信息189

11.1项目:利用webbrowser模块的

mapIt.py190

第1步:弄清楚URL190

第2步:处理命令行参数191

第3步:处理剪贴板内容,加载

浏览器191

第4步:类似程序的想法192

11.2用requests模块从Web下载

文件192

11.2.1用requests.get()函数下载

一个网页193

11.2.2检查错误193

10.3将下载的文件保存到硬盘194

10.4HTML195

10.4.1学习HTML的资源195

10.4.2快速复习195

10.4.3查看网页的HTML

源代码196

10.4.4打开浏览器的开发者

工具197

10.4.5使用开发者工具来寻找

HTML元素198

10.5用BeautifulSoup模块解析

HTML199

10.5.1从HTML创建一个

BeautifulSoup对象200

10.5.2用select()方法寻找元素200

10.5.3通过元素的属性获取

数据202

10.6项目:“I’mFeelingLucky”

Google查找202

第1步:获取命令行参数,并请求

查找页面203

第2步:找到所有的结果203

第3步:针对每个结果打开Web

浏览器204

第4步:类似程序的想法205

10.7项目:下载所有XKCD

漫画205

第1步:设计程序206

第2步:下载网页207

第3步:寻找和下载漫画图像207

第4步:保存图像,找到前一张

漫画208

第4步:类似程序的想法209

10.8用selenium模块控制浏览器210

10.8.1启动selenium控制的

浏览器210

10.8.2在页面中寻找元素211

10.8.4填写并提交表单212

10.8.5发送特殊键213

10.8.7关于selenium的更多

信息214

10.9小结214

10.10习题214

10.11实践项目215

10.11.1命令行邮件程序215

10.11.2图像网站下载215

10.11.32048215

10.11.4链接验证215

第12章处理Excel电子表格217

12.1Excel文档217

12.2安装openpyxl模块218

12.3读取Excel文档218

12.3.1用openpyxl模块打开Excel

文档219

12.3.2从工作簿中取得工作表219

12.3.3从表中取得单元格220

12.3.4列字母和数字之间的

转换221

12.3.5从表中取得行和列222

12.3.6工作薄、工作表、

单元格223

12.4项目:从电子表格中读取

数据223

第1步:读取电子表格数据224

第2步:填充数据结构225

第3步:将结果写入文件226

第4步:类似程序的思想227

12.5写入Excel文档227

12.5.1创建并保存Excel文档227

12.5.2创建和删除工作表228

12.5.3将值写入单元格229

12.6项目:更新一个电子表格229

第1步:利用更新信息建立数据

结构230

第2步:检查所有行,更新不正确的

价格231

第4步:类似程序的思想231

12.7设置单元格的字体风格232

12.8Font对象232

12.9公式234

12.10调整行和列235

12.10.1设置行高和列宽235

12.10.2合并和拆分单元格236

12.10.3冻结窗格237

12.10.4图表238

12.11小结240

12.11习题240

12.12实践项目241

12.12.1乘法表241

12.12.2空行插入程序241

12.12.3电子表格单元格翻转

程序242

12.12.4文本文件到电子表格242

12.12.5电子表格到文本文件242

第13章处理PDF和Word文档243

13.1PDF文档243

13.1.1从PDF提取文本244

13.1.2解密PDF245

13.1.3创建PDF246

13.1.4拷贝页面246

13.1.5旋转页面247

13.1.6叠加页面248

13.1.7加密PDF249

13.2项目:从多个PDF中合并

选择的页面250

第1步:找到所有PDF文件250

第2步:打开每个PDF文件251

第3步:添加每一页252

第4步:保存结果252

第5步:类似程序的想法253

13.3Word文档253

13.3.1读取Word文档254

13.3.2从.docx文件中取得完整的

文本254

13.3.3设置Paragraph和Run对象

的样式255

13.3.4创建带有非默认样式的

Word文档257

13.3.5Run属性257

13.3.6写入Word文档258

13.3.7添加标题260

13.3.8添加换行符和换页符261

13.3.9添加图像261

13.4小结262

13.5习题262

13.6实践项目263

13.6.1PDF偏执狂263

13.6.2定制邀请函,保存为Word

文档263

13.6.3暴力PDF口令破解

程序264

第14章处理CSV文件和JSON数据265

14.1csv模块265

14.2.1Reader对象266

14.2.2在for循环中,从Reader

对象读取数据267

14.2.3Writer对象268

14.2.4delimiter和lineterminator

关键字参数269

14.3项目:从CSV文件中删除

表头269

第1步:循环遍历每个CSV

文件270

第2步:读入CSV文件270

第3步:写入CSV文件,没有

第一行271

第4步:类似程序的想法272

14.4JSON和API272

14.5json模块273

14.5.1用loads()函数读取

JSON273

14.5.2用dumps函数写出

JSON273

14.6项目:取得当前的天气数据274

第1步:从命令行参数获取

位置274

第2步:下载JSON数据275

第3步:加载JSON数据并打印

天气275

第4步:类似程序的想法277

14.7小结277

14.8习题277

14.9实践项目277

Excel到CSV的转换程序277

第15章保持时间、计划任务和启动

程序279

15.1time模块279

15.1.1time.time()函数279

15.1.2time.sleep()函数280

15.2数字四舍五入281

15.3项目:超级秒表282

第1步:设置程序来记录时间282

第2步:记录并打印单圈时间283

第4步:类似程序的想法283

15.4datetime模块284

15.4.1timedelta数据类型285

15.4.2暂停直至特定日期286

15.4.3将datetime对象转换为

字符串287

15.4.4将字符串转换成datetime

对象288

15.5回顾Python的时间函数288

15.6多线程289

15.6.1向线程的目标函数传递

参数290

15.6.2并发问题291

15.7项目:多线程XKCD下载

程序291

第1步:修改程序以使用函数292

第2步:创建并启动线程293

第3步:等待所有线程结束293

15.8从Python启动其他程序294

15.8.1向Popen()传递命令行

参数295

15.8.2TaskScheduler、launchd和

cron296

15.8.3用Python打开网站296

15.8.4运行其他Python脚本296

15.8.5用默认的应用程序打开

文件297

15.9项目:简单的倒计时程序298

第1步:倒计时298

第2步:播放声音文件298

第3步:类似程序的想法299

15.10小结299

15.11习题300

15.12实践项目300

15.12.1美化的秒表300

15.12.2计划的Web漫画下载301

第16章发送电子邮件和短信303

16.1SMTP303

16.2发送电子邮件304

16.2.1连接到SMTP服务器304

16.2.2发送SMTP的“Hello”

消息305

16.2.3开始TLS加密306

16.2.4登录到SMTP服务器306

16.2.5发送电子邮件306

16.2.6从SMTP服务器断开307

16.3IMAP307

16.4用IMAP获取和删除电子

邮件307

16.4.1连接到IMAP服务器308

16.4.2登录到IMAP服务器309

16.4.3搜索电子邮件309

16.4.4选择文件夹309

16.4.5执行搜索310

16.4.6大小限制312

16.4.7取邮件并标记为已读312

16.4.8从原始消息中获取电子

邮件地址313

16.4.9从原始消息中获取正文314

16.4.10删除电子邮件315

16.4.11从IMAP服务器断开315

16.5项目:向会员发送会费提醒

电子邮件316

第1步:打开Excel文件316

第2步:查找所有未付成员317

第3步:发送定制的电子邮件

提醒318

16.6用Twilio发送短信319

16.6.1注册Twilio账号319

16.6.2发送短信320

16.7项目:“只给我发短信”

模块321

16.8小结322

16.9习题323

16.10实践项目323

16.10.1随机分配家务活的电子

邮件程序323

16.10.2伞提醒程序324

16.10.3自动退订324

16.10.4通过电子邮件控制你的

电脑324

第17章操作图像327

17.1计算机图像基础327

17.1.1颜色和RGBA值328

17.1.2坐标和Box元组329

17.2用Pillow操作图像330

17.2.1处理Image数据类型331

17.2.2裁剪图片332

17.2.3复制和粘贴图像到其他

图像333

17.2.4调整图像大小335

17.2.5旋转和翻转图像336

17.2.6更改单个像素338

17.3项目:添加徽标339

第1步:打开徽标图像340

第2步:遍历所有文件并打开

图像341

第3步:调整图像的大小341

第4步:添加徽标,并保存

更改342

第5步:类似程序的想法343

17.4在图像上绘画344

17.4.1绘制形状344

17.4.2绘制文本346

17.5小结347

17.6习题348

17.7实践项目348

17.7.1扩展和修正本章项目的

程序348

17.7.2在硬盘上识别照片

文件夹349

17.7.3定制的座位卡350

第18章用GUI自动化控制键盘和

鼠标351

18.1安装pyautogui模块351

18.2走对路352

18.2.1通过注销关闭所有程序352

18.2.2暂停和自动防故障装置352

18.3控制鼠标移动353

18.3.1移动鼠标354

18.3.2获取鼠标位置354

18.4项目:“现在鼠标在

哪里?”355

第1步:导入模块355

第2步:编写退出代码和无限

循环355

第3步:获取并打印鼠标坐标。356

18.5控制鼠标交互357

18.5.2拖动鼠标357

18.5.3滚动鼠标359

18.6处理屏幕360

18.6.1获取屏幕快照360

18.6.2分析屏幕快照360

18.7项目:扩展mouseNow程序361

18.8图像识别362

18.9控制键盘363

18.9.1通过键盘发送一个

字符串363

18.9.2键名364

18.9.3按下和释放键盘365

18.9.4热键组合365

18.10复习PyAutoGUI的函数366

18.11项目:自动填表程序367

第1步:弄清楚步骤368

第2步:建立坐标368

第3步:开始键入数据370

第4步:处理选择列表和单选

按钮371

第5步:提交表单并等待372

18.12小结372

18.13习题373

18.14实践项目373

18.14.1看起来很忙373

18.14.2即时通信机器人373

18.14.3玩游戏机器人指南374

附录A安装第三方模块375

附录B运行程序377

附录C习题答案381