办公自动化打卡 task01

这篇博客介绍了Python在办公自动化中的应用,重点讲解了文件自动化处理,包括读写文件、路径操作、文件及文件夹操作,以及使用shutil模块进行文件组织。此外,还介绍了如何使用zipfile模块压缩文件。内容详细地阐述了各个函数的用法和注意事项,如os.path.join()、os.makedirs()、shutil.copy()和shutil.move()。最后提到了自动发送邮件的功能,使用Python的smtplib和email库来实现。
摘要由CSDN通过智能技术生成

本次学习内容均来自DataWhale第26期组队学习
https://github.com/datawhalechina/team-learning-program/tree/master/OfficeAutomation

import pandas as pd
import numpy as np

1、文件自动化处理

1.1 读写文件

1.1.1 文件名和文件路径

os.path.join()是用于路径拼接的

语法:
os.path.join([path_1],[path_2],[path_3],…)

import os
os.path.join('datawale','docu')
'datawale\\docu'
os.path.join('study','datawale','docu')
'study\\datawale\\docu'

!注意:这里的双斜杠\,前面一个\表示转义。而Linux系统中,路径与文件名之间是用正斜杠’/'作分隔符的

1.1.2 当前工作目录

import os
os.getcwd()
'D:\\study\\datawhale\\OfficeAutomation'
# 改变工作路径
os.chdir("D:\\study\\datawhale\\python办公自动化")
os.getcwd()
'D:\\study\\datawhale\\python办公自动化'

1.1.3 路径操作

1.1.3.1 绝对路径和相对路径

绝对路径从根目录开始,相对路径,相对于该程序当前的工作目录

相对路径中,单个点“.” 表示当前目录;两个点“…”表示上一级目录,即父文件夹

os.path.abspath(path):表示将path相对路径转换为绝对路径,返回的是绝对路径的字符串;
os.path.isabs(paht):判断path是否是绝对路径,是则返回True,不是则返回False

# 首先看一下当前的路径,就是刚刚学习的
os.getcwd()
'D:\\study\\datawhale\\python办公自动化'
os.path.abspath(".")
'D:\\study\\datawhale\\python办公自动化'
os.path.isabs(".")
False
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):返回当前路径的文件或文件夹名称

os.path.relpath("D:\\study\\datawhale\python办公自动化",'D:\\study')
'datawhale\\python办公自动化'
os.path.relpath("D:\\study\\datawhale\\python办公自动化")
'.'
os.path.relpath("D:\\study\\datawhale\\OfficeAutomation")
'..\\OfficeAutomation'

因为当前工作路径被变更为:D:\study\datawhale\python办公自动化,所以从当前路径出发到达OfficeAutomation目录,就要先到上一级datawhale目录,然后再进入OfficeAutomation目录。就到达了函数中的path

我的python办公自动化文件夹中有一张python语言的发明者吉多·范罗苏姆(Guido van Rossum) 的照片,基于这张照片,我们可以利用os.path.dirname得到这张照片的目录名

os.path.dirname("D:\\study\\datawhale\\python办公自动化\\python之父.jpg")
'D:\\study\\datawhale\\python办公自动化'

而os.path.basename则可以返回当前路径的文件或者文件夹的名字

# 返回文件名
os.path.basename("D:\\study\\datawhale\\python办公自动化\\python之父.jpg")
'python之父.jpg'
# 返回文件夹名——示例1
os.path.basename("D:\\study\\datawhale\\python办公自动化")
'python办公自动化'
# 返回文件夹名——示例2
os.path.basename("D:\\study\\datawhale")
'datawhale'

如果同时需要文件名和当前文件的目录名,则可以调用os.path.split(),获得两个字符串的元组

caFilePath = "D:\\study\\datawhale\\python办公自动化\\python之父"
os.path.split(caFilePath)
('D:\\study\\datawhale\\python办公自动化', 'python之父')

当然也可以用之前的函数分别获得路径和文件名,然后将返回的结果放在一个元组中

(os.path.dirname(caFilePath),os.path.basename(caFilePath))
('D:\\study\\datawhale\\python办公自动化', 'python之父')

结果一样

如果想获得某个路径中每个文件夹名称的字符串列表,可以利用os.path.sep和split()函数进行分割获取

os.path.sep:路径分隔符,在windows系统下返回\\,在Linux系统下返回/
os.path.sep
'\\'
caFilePath.split(os.path.sep)
['D:', 'study', 'datawhale', 'python办公自动化', 'python之父']
1.1.3.3 路径有效性检查

如果提供的路径不准确,python就会奔溃报错,os.path模块提供了一些函数,用于检查路径是否真实存在,以及判断是文件还是文件夹

os.path.exists(path):判断path参数所指的文件或者文件夹是否存在
os.path.isfile(path):判断path参数是否存在,并且是一个文件则返回True,否则返回False
os.path.isdir(path):判断path是否存在,并且是一个文件夹,则返回True,否则返回False
os.path.exists("C:\\Windows")
True
os.path.exists("D:\\study\\datawhale\python办公自动化\\hello.jpg")
False
os.path.isfile("D:\\study\\datawhale\python办公自动化\\python之父.jpg")   # 路径有效且为文件
True
os.path.isfile("D:\\study\\datawhale\python办公自动化")   # 路径有效,但是非文件
False
os.path.isfile("D:\\study\\datawhale\OfficeAutomation\\python之父.jpg")   # 文件是文件,但是路径不对
False
os.path.isdir("D:\\study")
True
os.path.isdir("D:\\studys")
False
os.path.isdir("D:\\study\\datawhale\OfficeAutomation\\python之父.jpg") 
False

1.1.4 文件及文件夹操作

1.1.4.1 用 os.makedirs 创建新的文件夹
os.makedirs("D:\\study\\datawhale\\practice")
---------------------------------------------------------------------------

FileExistsError                           Traceback (most recent call last)

<ipython-input-40-6dd7f90855cc> in <module>
----> 1 os.makedirs("D:\\study\\datawhale\\practice")


D:\application\Anaconda3\lib\os.py in makedirs(name, mode, exist_ok)
    221             return
    222     try:
--> 223         mkdir(name, mode)
    224     except OSError:
    225         # Cannot rely on checking for EEXIST, since the operating system


FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'D:\\study\\datawhale\\practice'

os.makedirs()会检查该文件夹是否已经存在,若已经存在则不会覆盖,而是报错

如果需要创建的文件夹的上一层文件夹也不存在,则会自动创建所有必要的中间文件夹

os.makedirs("D:\\study\\datawhale\\tmp\我就看看你")
1.1.4.2 查看文件大小和文件夹内容
os.path.getsize(path):返回path参数中文件的字节数(即大小)
os.listdir(path):返回path参数下的所有文件名,以列表形式呈现
os.path.getsize("D:\\study\\datawhale\\python办公自动化\\python之父.jpg")
45605
os.listdir("D:\\study\\datawhale")
['OfficeAutomation', 'practice', 'python办公自动化']
os.listdir("D:\\study\\datawhale\\python办公自动化")
['python之父.jpg', 'python学习路径.png']
如果想获取某个文件夹下所有文件的大小之和,可以写一个简单的循环
totalSize=0
for filename in os.listdir
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值