From 8193b97942785445c5002857c641bad7e73e9918 Mon Sep 17 00:00:00 2001 From: Muxiaoxiong <46742031+muxiaoxiong@users.noreply.github.com> Date: Tue, 9 Nov 2021 10:04:11 +0800 Subject: [PATCH] =?UTF-8?q?Update=20Task01=20=E6=96=87=E4=BB=B6=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8C=96=E4=B8=8E=E9=82=AE=E4=BB=B6=E5=A4=84=E7=90=86?= =?UTF-8?q?.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Task01 文件自动化与邮件处理.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/OfficeAutomation/Task01 文件自动化与邮件处理.md b/OfficeAutomation/Task01 文件自动化与邮件处理.md index 0db1937..1c0a49b 100644 --- a/OfficeAutomation/Task01 文件自动化与邮件处理.md +++ b/OfficeAutomation/Task01 文件自动化与邮件处理.md @@ -1,4 +1,4 @@ -# 文件自动化处理 +# Task 01 文件自动化处理 - [1 文件自动化处理](#1-文件自动化处理) - [1.1 读写文件](#11--读写文件) @@ -32,9 +32,11 @@ - [2 自动发送电子邮件](#2-自动发送电子邮件) ## 1.1 读写文件 + 我们知道,程序运行时,可以用变量来保存运算结果,但如果希望程序运行关闭后,依然可以查看运行后的结果,就需要将数据保存到文件中。简单点,你可以将文件内容理解为一个字符串值,大小可能有几个GB。本节将学习,如何使用python在硬盘上创建、读取和保存文件。 ## 1.1.1 文件与文件路径 + 文件的两个属性:“路径”和“文件名”,路径指明文件在计算机上的位置,文件名是指该位置的文件的名称。比如,我的电脑上,有个名字为Datawhale - 开源发展理论研究.pdf的文件,它的路径在D:\Datawhale。在windows中,路径中的D:\部分是“根文件夹”,Datawhale是文件夹名。注:Windows中文件夹名和文件名不区分大小写的。 在windows上,路径书写是使用倒斜杠'\'作为文件夹之间的分隔符,而在OS X和Linux上,是使用正斜杠'/'作为它们的路径分隔符。通常我们用`os.path.join()`函数来创建文件名称字符串。 @@ -47,6 +49,7 @@ os.path.join('Datawhale','docu') 我们可以看到返回的是('Datawhale\\\docu'),有两个斜杠,这是因为有一个斜杠是用来转义的,在OS X或Linux上调用这个函数,这个字符串就会是'Datawhale/docu'。 ## 1.1.2 当前工作目录 + 每个运行在计算机上的程序,都有一个“当前工作目录”。利用`os.getcwd()`函数,可以取得当前工作路径的 字符串,并可以利用`os.chdir()`改变它。 @@ -63,6 +66,7 @@ os.getcwd() ## 1.1.3 路径操作 ### 1.1.3.1 绝对路径和相对路径 + “绝对路径”,总是从根文件夹开始。 “相对路径”,相对于程序的当前工作目录。 相对路径中,单个句点“.”表示当前目录的缩写,两个句点“..”表示父文件夹。 @@ -79,6 +83,7 @@ os.path.isabs(os.path.abspath('.')) #True ``` ### 1.1.3.2 路径操作 + `os.path.relpath(path,start)`:返回从start路径到path的相对路径的字符串。如果没提供start,就使用当前工作目录作为开始路径。 `os.path.dirname(path)`: 返回当前路径的目录名称。 `os.path.basename(path)`:返回当前路径的文件名称。 @@ -118,6 +123,7 @@ caFilePath.split(os.path.sep) #['D:', 'Datawhale', 'python办公自动化', 'p ``` ### 1.1.3.3 路径有效性检查 + 如果提供的路径不存在,很多Python函数就会崩溃并报错。`os.path`模块提供了一些函数,用于检测给定的路径是否存在,以及判定是文件还是文件夹。 `os.path.exists(path)`:如果path参数所指的文件或文件夹存在,则返回True,否则返回False。 @@ -153,6 +159,7 @@ os.path.isdir('D:\\Datawhale\\python办公自动化') ## 1.1.4 文件及文件夹操作 ### 1.1.4.1 用os.makedirs()创建新文件夹 + 注:`os.makedirs()`可以创建所有必要的中间文件夹。 ```python @@ -161,6 +168,7 @@ os.makedirs('D:\\Datawhale\\practice') #查看目录,已创建,若文件夹 ``` ### 1.1.4.2 查看文件大小和文件夹内容 + 我们已经可以处理文件路径,这是操作文件及文件夹的基础。接下来,我们可以搜集特定文件和文件夹的信息。`os.path`模块提供了一些函数,用于查看文件的字节数以及给定文件夹中的文件和子文件夹。 `os.path.getsize(path)`:返回path参数中文件的字节数。 `os.listdir(path)`:返回文件名字符串的列表,包含path参数中的每个文件。 @@ -183,6 +191,7 @@ print(totalSize) ``` ## 1.1.5 文件读写过程 + 读写文件3个步骤: 1.调用`open()`函数,返回一个File对象。 @@ -192,6 +201,7 @@ print(totalSize) 3.调用File对象的`close()`方法,关闭该文件。 ### 1.1.5.1 用open()函数打开文件 + 要用`open()`函数打开一个文件,就要向它传递一个字符串路径,表明希望打开的文件。这既可以是绝对路径,也可以是相对路径。`open()`函数返回一个File对象。 先用TextEdit创建一个文本文件,名为hello.txt。输入Hello World!作为该文本文件的内容,将它保存在你的用户文件夹中。 @@ -203,6 +213,7 @@ print(helloFile) 可以看到,调用`open()`函数将会返回一个File对象。当你需要读取或写入该文件,就可以调用helloFile变量中的File对象的方法。 ### 1.1.5.2 读取文件内容 + 有了File对象,我们就可以开始从它读取内容。 `read()`:读取文件内容。 @@ -220,6 +231,7 @@ sonnetFile.readlines() ``` ### 1.1.5.3 写入文件 + 需要用“写模式”‘w’和“添加模式”'a'打开一个文件,而不能用读模式打开文件。 “写模式”将覆写原有的文件,从头开始。“添加模式”将在已有文件的末尾添加文本。 @@ -251,6 +263,7 @@ print(content) 注意,`write()`方法不会像print()函数那样,在字符串的末尾自动添加换行字符。必须自己添加该字符。 ### 1.1.5.4 保存变量 + 1)、shelve模块 用`shelve`模块,可以将Python中的变量保存到二进制的`shelf`文件中。这样,程序就可以从硬盘中恢复变量的数据。 @@ -447,6 +460,7 @@ shutil.move('D:\\Datawhale\\docue\\bacon.txt','D:\\Datawhale\\docu\\egg.txt') ``` #### 1.2.1.3 永久删除文件和文件夹 + `os.unlink(path)`: 删除path处的文件。 `os.rmdir(path)`: 删除path处的文件夹。该文件夹必须为空,其中没有任何文件和文件夹。 @@ -470,6 +484,7 @@ for filename in os.listdir(): ``` #### 1.2.1.4 用send2trash模块安全地删除 + `shutil.rmtree(path)`会不可恢复的删除文件和文件夹,用起来会有危险。因此使用第三方的`send2trash`模块,可以将文件或文件夹发送到计算机的垃圾箱或回收站,而不是永久删除。因程序缺陷而用send2trash 删除的某些你不想删除的东西,稍后可以从垃圾箱恢复。 注意:使用时,需要非常小心,避免删错文件,一般在第一次运行时,注释掉这些程序,并加上`print()`函数来帮助查看是否是想要删除的文件。 @@ -484,6 +499,7 @@ send2trash.send2trash('bacon.txt') ``` ## 1.2.2 遍历目录树 + `os.walk(path)`:传入一个文件夹的路径,在for循环语句中使用`os.walk()`函数,遍历目录树,和range()函数遍历一个范围的数字类似。不同的是,`os.walk()`在循环的每次迭代中,返回三个值: 1)、当前文件夹称的字符串。