1 序
前面几篇文章说的都是些基础内容,与办公自动化并没有很直观的联系,本节课开始,将更新一些与自动化办公强相关内容。Python之所以受欢迎先说两方面原因,一方面是因为大数据时代到来,在获取数据、数据清洗、数据分析等领域,受益于众多的开源三方库,让Python有独特的优势,一切似乎都是那么简单;一方面是对新手友好,语法简洁,便于理解。支撑这两大块内容的基础便是丰富的核心库与自定义库,可以很方便实现所需要的业务逻辑。

2 os库使用
本节课主要简述一下核心库-os库。国际惯例先说重点,在自动化办公过程中,需要经常打开个各类文件,比如:excel、word、PPT。按照正常工作步骤,要先找到文件(可以是新建或者打开)在哪,然后双击打开,然后编辑内容,最后保存输出。那么使用python,先将地址传入,然后通过程序打开、编辑文件,最后保存输出。os库就是专门进行地址操作的,可以这么说os库就是自动化办公的基础。
2.1 os.walk
os.walk(top, topdown=True, onerror=None, followlinks=False)
生成目录树中的文件名,方式是按上->下或下->上顺序浏览目录树。对于以 top 为根的目录树中的每个目录(包括 top 本身),它都会生成一个三元组 (dirpath, dirnames, filenames)。
本段代码就是获取全量文件地址:
def Get_file_path(path):
result = []
for Filedir, Subdir, File_name_list in os.walk(path):
for Filename in File_name_list:
file_path = os.path.join(Filedir,Filename)
result.append(file_path)
return result
2.2 os.getcwd()
获取程序所在的文件夹地址,类型为字符串。
2.3 os.getcwdb()
获取程序所在的文件夹地址,类型为字节串。
2.4 os.listdir(path)
返回指定文件夹地址path中的所有文件名,不包含文件夹地址,类型为列表。 该列表按任意顺序排列,并且不包括特殊条目 '.' 和 '..',即使它们存在于中。
2.5 os.mkdir
os.mkdir(path, mode=0o777, *, dir_fd=None)
path:假设path为不带地址的字符串,将在程序所在位置创建一个名为 path 的文件夹;path带有地址,将在地址位置创建文件夹。
mode:目录的权限设置。
0o700:只有所有者有读/写/执行权限。
0o755:所有者拥有读/写/执行权限,而组和其他用户只有读/执行权限。
0o777:所有者、组和其他用户都具有读/写/执行权限。
dir_fd:参数是一个相对较新的特性,用于指定要创建新目录的父目录的文件描述符。它允许你通过文件描述符来操作目录,而不是直接使用文件路径
如果文件夹已经存在, 会触发FileExistsError 错误。如果地址中的部分地址不存在,则会触发 FileNotFoundError错误 。
2.6 os.remove
os.remove(path, *, dir_fd=None)
它用于删除指定路径的文件。这个函数需要一个参数path,,即要删除的文件地址。
path:要删除的文件地址。
dir_fd:同上。
假设文件不存在,则会触发错误。
2.7 os.rename
os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
将文件或目录 src 重命名为 dst。
src:源文件名或目录名
dst:修改后的文件名或目录名
如果 dst 已存在,则下列情况下将会操作失败
2.8 os.path --- 常用路径操作
2.8.1 os.path.basename(path)
返回路径 path 的文件夹名称。这是将 path 传入函数 split() 之后,返回的一对值中的第二个元素。
path=r"C:\Desktop\实验"
print(os.path.basename(path))# 输出:实验
2.8.2 os.path.dirname(path)
返回路径 path 的上层完整地址名称。这是将 path 传入函数 split() 之后,返回的一对值中的第一个元素。
path=r"C:\Desktop\实验"
print(os.path.basename(path))# 输出:C:\Desktop
2.8.3 os.path.getsize(path)
返回 path 的文件夹大小,以字节(Byte)为单位。如果该文件不存在或不可访问,则抛出 OSError 异常。
path=r"C:\Desktop\实验"
print(os.path.getsize(path))# 输出:12888
2.8.4 os.path.split(path)
将路径 path 拆分为一对,即 (head, tail),tail 是路径的最后一部分,而 head 里是除最后部分外的所有内容。tail 部分不会包含斜杠,如果 path 以斜杠结尾,则 tail 将为空。如果 path 中没有斜杠,head 将为空。如果 path 为空,则 head 和 tail 均为空。head 末尾的斜杠会被去掉,除非它是根目录(即它仅包含一个或多个斜杠)。
path=r"C:\Desktop\实验"
print(os.path.split(path))# 输出:('C:\\Desktop', '实验')
2.8.5 os.path.join(path0, path1,path2)
将路径 path与文件名结合成完整的地址。这个函数可以将多个路径部分组合成一个完整的路径。在处理文件和目录的路径时,这个函数非常有用。它可以正确地处理不同操作系统的路径分隔符,因此,你的代码可以在不同的操作系统上运行,而无需修改。
path=r"C:\Desktop\实验"
dir="实验.txt"
print(os.path.join(path,dir))# 输出:C:\Desktop\实验\实验.txt
2.8.6 os.path.splitext(path)
将路径名称 path 拆分为 (root, ext) 对使得 root + ext == path,并且扩展名 ext 为空或以句点打头并最多只包含一个句点。
如果路径 path 不包含扩展名,则 ext 将为 '':
如果路径 path 包含扩展名,则 ext 将被设为该扩展名,包括打头的句点。
path=r"C:\Desktop\实验\foo.bar.exe"
print(os.path.splitext(path))
# 输出:('C:\\Desktop\\实验\\foo.bar', '.exe')
2.8.7 os.path.splitdrive(path)
将路径 path 拆分为一对,即 (drive, tail),其中 drive 是挂载点或空字符串。在没有驱动器概念的系统上,drive 将始终为空字符串。在所有情况下,drive + tail 都与 path 相同。
在 Windows 上,本方法将路径拆分为驱动器/UNC 根节点和相对路径。
如果路径 path 包含盘符,则 drive 将包含冒号之前的所有内容包括冒号本身:
path=r"C:\Desktop\实验\foo.bar.exe"
print(os.path.splitdrive(path))
# 输出:('C:', '\\Desktop\\实验\\foo.bar.exe')
3 小结
地址操作是自动化办公的基础,灵活使用可以事半功倍。本章主要介绍os库,os库可以获取地址、分解地址(获取所在盘、文件类型、父级地址、文件名)、合成地址,满足大部分办公场场景。这里提个醒,合成地址时为无脑合成,并不检测地址是否规范,用的时候检查一下,传入的地址是否正规。下一章内容,将介绍大名鼎鼎的pandas库。有问题可以在评论区提出,希望各位早日实现摸鱼自由,下次见。
4 小习题
基础版:利用os库以及if语句,提取固定文件夹中的“.exe”文件地址
进阶版:并将获取结果保存为txt
动起小手,开干吧