This commit is contained in:
louzefeng
2024-07-11 05:50:32 +00:00
parent bf99793fd0
commit d3828a7aee
6071 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,241 @@
<audio id="audio" title="导读入门Python的必备知识" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/45/a9/458ec4c09284e3bc8562c79a418459a9.mp3"></audio>
你好,我是尹会生。
咱们这个课程是用Python解决办公低效问题但是**即使你从来没有用过Python甚至没有任何的编程语言基础也完全可以学会这门课**。
为了解决你的语言问题,我特意准备了这节课。我会给你讲解 Python的五个最基础的语法知识包括运行环境配置、变量、数据类型、控制语句和使用函数库的方法。
这节课的内容也不需要你马上掌握,其中提到的一些关键知识,我会在后面的课程中详细讲解,包括它们的使用场景和具体用处。**学完这节课你只要能对Python有一个初步的了解可以看懂基本的Python代码就行了**。
当然如果你有一定的Python语言基础那么这节课就相当于给你巩固复习了帮你查漏补缺。
## 运行环境配置
我们先从Python的运行环境配置开始说起。初学者面对的最大难题就是如何让自己的Python程序运行起来。
一般情况下运行的Python代码会被保存到一个以.py作为扩展名的文件中也就是Python脚本文件。要想让Python程序运行我们需要打开终端应用程序在Windows中开始-运行-cmd.exe
```
python3 /py文件所在的路径/xxx.py
cd /py文件所在的路径
python3 xxx.py
```
这段代码中xxx.py就是我们编写好的Python脚本文件Python3 是Python脚本文件的解释器它会把我们编写好的代码翻译给计算机让计算机去执行。
在运行程序的过程中,有两点需要注意。
第一Windows和macOS默认是没有安装Python解释器的所以你需要通过[Python官方网站](https://www.python.org/downloads/)下载不同操作系统下的Python解释器。关于Python的版本我建议你使用官方建议的最新稳定版本下载后直接安装就可以使用了。
第二Python3 解释器需要在字符终端下运行。
以macOS系统为例你需要打开终端来运行`python3 -V`命令来验证Python解释器是否安装成功如果显示了Python解释器的版本那说明安装是成功的。如果提示没有找到这个命令你需要重新安装并注意安装过程中是否有错误提示信息。
```
python3 -V # 执行的命令
Python 3.9.1 # 返回的结果
```
搭建Python的开发环境是运行一切程序的基础。无论你现在手边电脑操作系统是哪一种我都建议你马上行动先按照刚刚讲解的步骤正确地安装和设置Python开发环境。这样在之后的课程中你就能马上跟着我的讲解进行操作了。
## 变量
在正确配置好Python的开发环境之后咱们继续学习一个重要概念变量。
变量这个词来源于数学,在编程语言中,变量主要是用来存储计算结果或表示值的抽象概念。
计算机中的变量都有一个名字我们把它称为变量名。这个名字一般是根据变量的英文名进行人为命名的一般多用简短且易于记忆的名字。比如我在课程中会使用src_path、dst_path两个变量表示操作源文件路径和目标文件路径。
我们还可以为变量指定一段数据,这段数据称作变量的值。计算机处理的数据很大一部分来源于用户输入的数据和运算的结果数据,如果这部分数据需要跟踪,我们就可以将数据存储在变量中。
对于初学者来说变量的概念比较抽象你可能现在有点蒙。别急我现在给你举一个简单的例子你一看就明白了。假如我要在Python当中计算两个数的和代码如下
```
x=100
y=200
z=x+y
print(z)
```
在上面的代码当中, 我们分别定义了x、y、z三个变量。 x、y、z称作变量名定义变量名必须要遵从以下四个规则
1. 变量名只能是字母、数字或下划线;
1. 变量名的第1个字母不能是数字
1. 变量名也不能是Python的关键字
1. 变量名是区分大小写的。
上述代码中的=和+,称作运算符。
- “=”叫做赋值运算符。它的功能是将右边的表达式赋值给左边的变量。
- “+”叫做算术运算符。进行算术运算时还可以使用-、*、/、%等常用算术运算符号。
代码的最后一行为了能让你的计算结果在终端上显示我们需要使用一个叫做print的内置函数。
内置函数是Python内置的一种功能。比如代码中的print就是用来进行输出的。它的最基本用法就是在print函数的括号中写入变量除了输出最终的结果外也可以将print函数放在程序运行的过程中方便你输出更丰富的调试信息。
通过上面的讲解我为你介绍了变量如何进行赋值和如何输出。其实在Python中变量用来存储的数据还会区分类这些类型也有专门的名称叫做数据类型。
## 数据类型
Python支持的数据类型有数字、字符串、元组、列表、集合、字典6种不同的数据类型用于描述不同的类别比如姓名可以用字符串类型性别可以用布尔型身高可以用数字类型。下面的代码我为你演示一下三种最简单的数据类型
```
name = &quot;yin huisheng&quot;
male = True
hight = 180
```
上面的三个变量,我分别为它赋予了字符串、布尔类型和浮点型这三种数据类型。 Python的变量不需要事先定义变量类型跟其他语言相比更加简洁。Python可以直接对变量进行赋值这样就可以根据变量值自动识别变量的类型了。
不过在上面的例子当中,你还需要注意两点。
一方面,如果你使用字符串类型,就必须给字符串增加引号。这是字符串的语法规定,如果不加引号会被识别为其他类型,在进行操作时就会得到不同的结果。
比如说我定义Python的变量为“123”加了引号会被识别为字符串如果一个变量“123”没有加引号则会被自动识别为数字。如果在Python程序中使用“123+123”会得到两个整数的和“246”如果是“123”+“123”就会得到两个字符串的连接“123123”。
另一方面使用布尔类型的时候True和False首字母必须要大写它们是Python的关键字如果首字母没有大写会被当作变量处理解释器也会报错。True在布尔类型表示真False表示假。比如算式10&gt;5 是正确的在Python中就会用True来表示结果是真反之为假。
上面提到的整数、浮点数和布尔型都是属于数字类型。除了这些Python还支持很多种数据类型包括数字、字符串、元组、列表、集合、字典等。它们之间的关系我用下面的思维导图为你进行展示。
<img src="https://static001.geekbang.org/resource/image/62/92/6203aa4db38f3ab13358df0c6004yy92.png" alt="">
我在课程中会逐一为你剖析它们的用处,让你能够全部掌握。当你学会这些类型的时候,可以更精确地描述数据比如我想用Python的数据类型存储“5个苹果和10个橘子”我们就需要使用字典和字符串来表示这些数据。你可以看一下下面这个记录水果数量的例子
```
fruits1 = {&quot;apple&quot;:5, &quot;orange&quot;:10}
fruits2 = &quot;apple,5,orange,10&quot;
```
我分别用字典和字符串记录了水果的名称和数量,可以看到,字典表达的水果和数量之间的映射关系更明确,而且不同的数据类型还能支持它特有的内置方法。例如上面定义了水果的字典数据类型,我们可以通过 fruits["apple"] 直接得到苹果的数量5 , 有时候,这些便捷的内置方法也是我们选择数据类型的依据。
数据类型是一门编程语言的必要组成部分学习编程语言主要就是为了掌握它的数据类型。这节课我只要求你能够了解Python有哪些基本数据类型就可以了在之后的课程当中我会为你重点介绍每一种数据类型的优缺点以及该怎么使用它们。
## 流程控制
流程控制,就是我们经常说的程序执行的顺序控制。 从上面的几个例子当中你会发现程序都是从上向下依次执行的。这也是Python语言最简单的结构——顺序结构。在Python中除了顺序结构之外还有分支和循环两种结构。
### 分支结构
分支结构用来判定某个条件是否成立它会根据一条或多条语句的判定结果是True还是False来执行对应操作的语句从而实现分支的效果。实现分支结构的语句叫做if语句。除了if这个关键词外我们经常还会用if...else和if...else...if语句来实现更多的分支和更复杂的逻辑。
我们一起看一个比较数值大小的例子吧。
```
x = 20
if x &gt; 10: # 注意结尾的冒号:
print(&quot;if的判断结果为True&quot;)
print(&quot;x的值大于10&quot;)
else:
print(&quot;if的判断结果为False&quot;)
print(&quot;x的值小于10&quot;)
print(&quot;程序执行结束&quot;)
# 执行结果如下
if的判断结果为True
x的值大于10
程序执行结束
```
在上面这段代码当中我们实现了判断变量x是否大于10的功能。在书写分支结构时要注意书写格式问题分支结构的书写格式比顺序结构要复杂例如
1. if判断的书写格式冒号标志着if判断的结束。
1. if下方有缩进的代码是在True的条件下才能运行的。在演示代码中缩进代码由2行组成其实它也可以由很多行代码组成多行代码的形式被称作代码块。代码块一直到缩进再次改变的时候True条件下的代码才结束。
需要你注意的是在整个程序当中缩进方式必须一致要么使用Tab、要么使用4个空格进行缩进。Python对于缩进和复合语句结尾的冒号要求非常严格如果弄错了就会报错。而且缩进不同会大大影响一个程序的运行结果。例如上面的代码中“print("程序执行结束")” 如果有缩进,你就看不到“程序执行结束”这行执行结果了。
### 循环结构
在程序运行逻辑中,另一个重要的结构叫做循环结构。**循环结构是可以多次执行同一段代码的语句结构**。在Python当中有两种循环语句分别是while语句和for语句。
while语句在循环开始前先对条件语句进行判断。如果条件语句的结果为True则循环一次再次进行判断。如果条件允许的结果为False则循环结束。这里所指的条件语句和if语句当中的条件是一样的。下面的例子是我使用while语句实现的从1~10的累加。
```
start = 1
total = 10
sum = 0
while start &lt;= total: # 条件为True 继续执行循环
sum += start
start += 1
print(sum) #条件为False循环结束,输出结果
```
另一个循环语句叫做for语句它和while的功能有所不同。我们一般把for的功能称作遍历功能。一般我们会提供一个列表通过for将列表中的每一个元素读取出来进行处理。
举个例子,如果我们要依次输出列表中的每一个元素,就可以用下面的代码:
```
total = list(range(1,11)) # 定义一个1-10 的列表
for i in total:
print(i)
# 输出结果
1
2
3
4
5
6
7
8
9
10
```
流程控制语句可以改变Python程序的执行顺序而我们通常会根据实际的业务场景来控制某些语句块进行重复执行的。
## 使用函数库
Python语言的强大之处除了语法简单外就在于它庞大的函数库了。
Python的函数库有标准库和第三方库也叫扩展库。标准库是Python自带的而扩展库是需要再进行安装的库。你可以从[Python的官方文档](([https://docs.python.org/zh-cn/3.9/library/index.html](https://docs.python.org/zh-cn/3.9/library/index.html))和[PyPI网站](https://pypi.org/search/)中找到它们,其中,[PyPI网站](https://pypi.org/search/)的库就是扩展库。
[PyPI](https://pypi.org/)网站上面的项目超过28万个几乎包含了各个行业和各个功能的应用实现了很多你日常需要手动操作的功能。
这些库如何是用呢?首先看一下官方自带的库。
**如果要使用官方自带的库可以使用import关键字导入**。例如我计算算数平方根功能,就可以使用如下方法:
```
import math
math.sqrt(16)
```
import 后面指定要使用的库的名称使用库的具体功能通过官方文档来找到相应的函数。例如算数平方根使用sqrt函数就可以实现你想要的功能了。
标准库的使用非常容易吧,那如何使用扩展库呢?由于扩展库都需要通过网络进行下载,因此我们还需要提前**在终端使用pip3命令进行下载和安装**。例如我希望Python可以支持Word文件格式, 我就需要在终端执行下面的代码。
```
pip3 install python-docx
```
下载和安装之后, 就可以像标准函数库一样使用import导入使用了。
## 总结
通过上面的内容我为你简单介绍了一下入门Python需要掌握的五大部分包括环境配置、变量、数据类型、控制语句和使用函数库的方法。这五个部分是Python最基础也是最必要的语法知识。希望你能通过我的介绍对Python语言有所了解消除对编程语言的畏惧心理。
最重要的是,即使今天这节课你没有完全懂,也没有关系。
一方面,我会在之后的课程中不断讲解每个部分的用法和具体使用场景。还是我在开篇词中说的学习方法,你需要在听我讲解的同时,动手操作,反复练习,这些语法知识就不会是太大的问题。
另一方面,我也希望你能在学习之后的课程时,如果遇到哪些关键语法知识不太明白,就回头来学习今天这节课。这节课相当于整个课程的基石,需要反复琢磨、反复学习。
如果你能跟着我的课程不断练习实操,那学完后,你都能够熟练地修改课程中涉及到的代码,并且还能根据自己的工作场景,自行编写提升工作效率的程序。
## 思考题
最后留一道思考题给你,你以前是如何学习编程语言的呢?有没有好的学习方法分享一下?或者你在学习过程中有遇到什么困难,也可以分享出来。
如果你觉得这节课能帮助你提升办公效率,欢迎点击“请朋友读”,分享给你的朋友或同事。

View File

@@ -0,0 +1,136 @@
<audio id="audio" title="开篇词 | 重复工作这么多,怎样才能提高工作效率?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/31/8f/3114a4e55f7c420c82d738f376dfff8f.mp3"></audio>
你好我是尹会生。欢迎你来到《Python自动化办公实战课》在接下来的3个月时间里我们一起通过办公自动化来提升工作效率。
工作15年来我在游戏公司做过技术总监也在新浪网做过技术经理负责公司运维平台建设和相关工具的开发工作几乎每天都在和Linux打交道。
在这门课之前,我已经在极客时间开设了两门视频课程:[《零基础学 Python》](https://time.geekbang.org/course/intro/100008801)和[《Linux实战技能100讲》](https://time.geekbang.org/course/intro/100029601)为Python语言的初学者和运维工程师、开发工程师提供系统化的课程目的就是解决他们在学习、实践中遇到的80%的问题。
目前这两门课程已经有3万多名同学加入学习了。看到这些内容能够切实地帮助同学们解决他们的问题我非常开心也很受鼓舞。
所以这次我又为你带来了《Python自动化办公实战课》这门专栏课程。我总结了工作这些年来切身经历的、经常被问到的办公效率低下问题以及对应的解决方案我会把它们全部分享给你。
希望你学完这门课,能够**告别重复、机械的工作,提高工作效率,同时也能把时间花在刀刃上,去提升自己的核心竞争力**。
说到这里,你脑中是不是回忆起了一幕幕的低效工作场景:
- 需要对Excel文件中的内容进行拆分和合并你要一个个手动拆分再合并
- 文件夹里有大量图片需要重命名,你不得不挨个儿点击一张张图片,再重新命名;
- 网络中有大量新闻和图片需要下载,你就要手动把每个网页另存为文件;
- 需要把数据快速生成自己想要的图形,一个一个图形参数来设置;
- 需要让计算机在凌晨执行任务,你只能让闹钟在半夜把自己叫醒,人工执行,观察执行结果;
- ……
这些工作其实难度都不大,但它们有一个共同的特点,就是**重复、机械的手工劳动,非常耗费时间和精力**。实际上,我们换一种方法,就可以快速完成这些工作,节省数倍的时间。如你所想,这些都是我要通过这门课帮助你解决的问题。
那具体怎么解决呢?
## 解决这些低效问题,我的思路是什么?
其实我们现在的办公环境已经基本实现自动化了Word、Excel、邮件、思维导图等各种各样的工具都非常顺手表格的合并拆分、使用快捷键进行文件的各种操作等各种技巧也是随手一搜就能得到。但相应的问题也就来了我们怎么用好这些工具、怎么内化这些技巧呢
静下心来想一下,现在我们掌握的绝大多数办公工具和技巧,都是基于计算机的。那这个问题,就可以用计算机的思维从根儿上去解决了。所以,我们不妨引入《设计模式》的思路:**代码封装得越“高级”,解决的问题就越具体;越深入计算机底层,解决的问题就越通用。**
如果你暂时不理解这句话的意思也没关系,只需要明白这样一点就可以:**要想快速提高办公效率,解决方法不在各种小技巧和小软件,而在于理解底层逻辑,以及加快人和计算机的交互过程**,能够高效地解决输入(格式转换)、输出(格式统一)、控制(内容处理)、运算(查找、替换)、存储(文件保存和绘图),自然就能解决大部分的效率问题。
只要对计算机的体系结构稍有了解,你就会听说过冯 · 诺依曼结构:计算机由运算器、控制器、存储器、输入设备和输出设备这五部分组成。所以,我们解决用好自动化办公工具和技巧的方法,和经典的冯 · 诺依曼结构是相吻合的,就是**理解计算机的底层逻辑,从而提升我们和计算机交互的效率**。
<img src="https://static001.geekbang.org/resource/image/8e/5b/8eaa498846e1809834d86e1ecda4b25b.png" alt=""><br>
<img src="https://static001.geekbang.org/resource/image/64/4a/647d5d1cdb6c0438845ca01426725c4a.png" alt="">
说到这里我可以给你分享一段我的工作经历。我曾经维护过日活超过3亿用户的微博私信平台你可以看看我是怎么用计算机的思维来提高自己和团队的工作效率的。
我们在一个业务模块中需要批量替换200台服务器中的软件配置而且每个服务器都有一个文件需要将第五行内容, 由原有的接口版本v1统一替换成v2。
面对这样的需求其实有很多挑战在里面。第一个是替换的实效性如果手动替换接口版本由于服务器过多用户就有可能访问到还没来得及替换的接口上如后就有可能看到自己的消息是已读状态一刷新页面又变成了消息未读。第二个就是服务器数量很多手动替换还没做完下一个需求就接着来了。第三手动替换这么多服务非常容易出现拼写错误也就是我们常说的手误导致你要再花更多的时间来排捉Bug。
这样很低效对不对如果使用Python的话我们就可以从3个方面来提升效率。
第一用Python程序代替一个个的手动操作实现文字内容的替换这样就会解放人力你的工作压力会减轻很多。<br>
第二我可以通过Python批量控制服务器让服务器自动完成这些工作。<br>
第三个就是灵活性方面的优化了, 我们可以让这段程序定时运行,又可以让它们能够同时运行,从一个一个执行,到五个五个执行。
这三方面的优化,我在课程中都会为你讲解到。
你可能会问编程语言有那么多比如Java、Go等等我为什么要选择Python呢或者说为什么我会认为Python非常适合用来提升我们的工作效率呢如果你不会Python可以学这门课吗
不要着急我来和你说下Python语言的几个特点你就能明白了。
## 为什么选择用Python来解决
**首先Python的用法非常简洁、灵活就像汉语、英语这类自然语言一样容易理解和使用**。世界著名程序员、软件开源运动旗手埃里克·雷蒙Eric S. Raymond在《如何成为一名黑客》中说道
>
如果你不懂任何计算机语言,我建议从 Python 入门。它设计整洁,文档良好,对初学者很友好。
Python用法简单但是对于初学者尤其是没有Python基础的话那该怎么来学这门课呢其实这也是我在设计这门课时重点考虑的一个问题。所以**不用担心我为你准备好了0基础的学习路径**。
**第一,导读是整个课程的基石**。导读部分我会为你讲解Python最基础且最重要的五大语法部分让你对Python有一个初步的了解能够看懂基本的Python代码。这也是你入门Python学习的第一步。
同时,导读在整个课程中会起到一个引领的作用。其中的语法知识我会在之后的课程中讲解,所以在学习时如果有不懂的话,仍然可以回过头来看导读部分。
**第二,一定要动手来操作**,毕竟看一遍我的操作,跟你自己操作是不一样的。
**第三,如果你有时间的话,我还建议你去抄写每一段代码**。要知道看一遍课程和把看的东西写出来的感觉是完全不一样的。这个建议我在之前的《零基础学Python》这门课中也提过很多用户反映学习效果确实不错提升速度很快。
问题都是在不断学习中解决掉的,所以最后我也建议你遇到问题不怕畏惧,跟着课程来慢慢学习就行了。
其次,**Python的扩展库很丰富可以满足非常多的复杂场景的需求能够替代非常多的手工操作**。这也是Python相对于其他编程语言的一大优势。
目前Python的扩展库已经覆盖了文件、声音、视频、数据科学、深度学习等众多行业。通过这些扩展库我们可以用Python连接Excel、Word、邮件等常用办公组件轻松应对各类工作场景不用自己手动写很多功能代码了。而连接方法也很简单以操作Word文档为例你只要掌握下面这行代码就可以了
```
import docx
```
通过这样一行简单的代码你的Python就能支持Word中的文字、字体、段落、样式、表格等各种功能进行读写操作了当然了为了实现你的各种定制需求还需要继续编写代码这里的优点是直接支持其他语言是要先像是操作压缩文件一样对docx格式解压缩再对xml文件进行处理非常复杂
最后,**Python还有一个你无法抗拒的优点那就是它的跨平台性**。
也许有一天你用的电脑的操作系统从macOS变成了Windows或者从Windows变成了macOS那也完全不用担心。Python的跨平台特性可以帮你做到不用修改任何一行代码就可以让已经写好的程序直接在新的平台上运行。
总结来说Python的简洁、扩展库丰富和跨平台特性这三点就保证了你可以轻松学会这门课用Python去实现办公自动化提升自己的工作效率。
说了这么多哪些工作可以用Python实现自动化而我又会怎么给你讲这门课呢
## 这门课是怎么设计的?
在开头的时候我也说了要用计算机的思维去解决办公自动化工具和技巧的问题所以我就把常见的30个机械、重复的工作场景按照任务类型划分成了输入、运算、控制、存储和输出这5个模块。
**“输入”模块:解决不同文件类型的批量合并和拆分问题**
这类任务往往包含了格式相似的大量文件比如Word、Excel、Txt文件我会带着你用Python去进行批量合并和拆分。
**“运算”模块:扩展常用的统计、搜索和排序功能**
很多软件自带的统计、搜索和排序功能都很好用但不支持在多个文件或者跨类型文件中使用。所以在这个模块我们要学习的就是怎么通过Python进行扩展让这些好用、常用的功能可以支持多个文件或不同类型的文件。
**“控制”模块:通过插件的方式增强办公软件以及周边软件、硬件的交互能力**
办公软件的核心功能通常是支持文字和表格等内容的相关操作对控制外部设备相对较薄弱。例如Word本身是不支持批量打印Word文件的但批量打印又是一个常见的需求。这个需求就可以通过脚本化来实现达到打印自动化的目的。
**“存储”模块:和文件相关的很多常用操作部分**
在工作中,我们经常会面对这么几种需求:需要对大量文件进行重命名;需要通过网络批量下载视频和图片;需要在海量文件中快速找到自己想要的文件;等等。
这些需求最大的问题就是我们需要手工重复操作或者自带工具不好用。那么利用Python和文件、网络功能相结合就完全可以实现目录下的批量改名、文件的批量下载免去了手工重复操作的问题。
对于系统自带的文件查找工具来说速度慢而且不够简洁那我们可以使用Python根据自己定义的目录搜索加快搜索文件的效率。
**“输出”模块:智能化输出自己的工作成果**
在这一部分我要教你更直观和更智能地输出自己的工作成果。比如说你交付给同事的数据可以通过Python一键转为图形也可以根据你的需要将图形采用图片或网页的形式展示给你的同事提高工作汇报的效率更直观地展示自己的工作成果。
<img src="https://static001.geekbang.org/resource/image/1f/16/1f9317004dcda3c0f18ec4595833d016.png" alt="">
在讲解这5个模块、30个常见的办公场景的效率提升方法时我还会带你剖析它们背后的原理和你展示我分解任务、解决问题的思路。
因为提升办公效率的方法和技巧真的是非常非常多,但如果我们没能把这些方法和技巧做系统的梳理,那它们就是孤立的存在,知道得再多,也没办法根据自己的工作场景灵活运用。
如果到这里你还是担心自己不会Python就学不会这门课、就没办法提升自己工作效率的话我还可以再给你吃一颗定心丸这也是我额外送你的一份礼物**在每节课的最后,我都会给你交付一个可运行的小程序**。**你只需要调整保存路径和几个简单的参数,就可以在自己的电脑上运行,就可以去应对你实际工作中相似场景的重复工作,提升自己的办公效率。**
所以,**不但能用Python让你的工作效率翻无数倍还可以收获编程思维、解决问题的思路以及30个小程序。**
最后我们来一起立个Flag吧通过三个月的学习让自己成为10x职场人也欢迎你邀请你的小伙伴们一起来学习共同成长