写了四十篇办公自动化文章后,我整理了这十个常用操作,代码拿走就用!
大家好,我是早起。
在过去的半年内,我总共发布了超过了40篇 「Python办公自动化」文章,不知道大家有没有发现,有一些模块、一些代码会频繁出现。而os
、shutil
、glob
基本是每篇都会出现。
在写了几十篇文章后,我将一些办公自动化常用操作的代码单独整理出来,大家拿走就可以用在自己的脚本中!
01
OS模块相关
一、遍历文件夹
批量操作的前提就是对文件夹进行遍历,使用os
模块可以轻松的遍历文件夹,os.walk
遍历后产生三个参数:
“
当前文件夹路径
包含文件夹名称[列表形式]
包含文件名称[列表形式]
”
代码如下,大家可以根据自己的路径进行修改
import osfor dirpath, dirnames, filenames in os.walk(r'C:\\Program Files (x86)'):print(f'打开文件夹{dirpath}') # 当前文件夹路径 if dirnames:print(dirnames) # 包含文件夹名称[列表形式] if filenames:print(filenames) # 包含文件名称[列表形式]print('-' * 10)
当手上的需求明确有获取给定路径各级文件夹下所有符合条件的文件,并进行相应的批处理操作时,即可使用 os.walk
二、 目标路径是否是文件
有时我们需要判断一个目录下是否存在文件也可以使用os
模块。
给定一个目标路径 path
,通过一行代码就能够判断这是文件还是文件夹路径
import ospath = 'xxx'
print(os.path.isfile(path))
三、获取路径中的文件名
os.path.basename
可以直接从绝对路径中获取最后的文件名,当然如果用传统的字符串切割方式也可以,即 path.split('\\')[-1]
import ospath = 'xxx'
print(os.path.basename)
四、创建文件夹
创建文件夹的代码非常常用,因为往往生成的新文件都希望有个新的文件夹存储,代码如下:
import osdirpath = 'xxx'
os.mkdir(dirpath)
但是,如果希望创建的文件夹已经存在,再运行 os.mkdir()
则会报错而终止代码。为了避免这一情况的发生,可以在创建文件夹之前先判断文件夹是否存在。
用到的代码是 os.path.exists
,只有当路径不存在(即 os.path.exists
返回的结果是 False
时),才会创建:
import osdirpath = 'xxx'
if not os.path.exists(dirpath):os.mkdir(dirpath)
五、获取桌面路径
获取桌面路径也是非常常用的操作,可以使用os.path.join(os.path.expanduser("~"), 'Desktop')
获取桌面的绝对路径。
这样做的好处是可以把数据放在桌面上,在不同的电脑上都能调用代码对数据进行处理。如果是在一条电脑上把桌面路径固定在字符串中,则换一台电脑就必须修改桌面路径。代码如下:
import osdesktop_path = os.path.join(os.path.expanduser("~"), 'Desktop')
print(desktop_path)
当然把上面的代码包装成一个函数 GetDesktopPath()
需要时调用它会更加方便
import osdef GetDesktopPath():return os.path.join(os.path.expanduser("~"), 'Desktop')
六、重命名文件/文件夹
需要用到 os.rename()
方法,下面的代码示例中分别演示如何重命名文件和文件夹
import osos.rename('practice.txt', 'practice_rename.txt') # 重命名文件
os.rename('文件夹1', '文件夹2') # 重命名文件夹
七、批处理文件 - 1
除了前面的 os.walk
之外,有其他的 os
模块下方法可完成获取指定路径的全部或符合条件的文件(非遍历各级文件夹的需求),还可以使用下面两个代码 第一种用到的方法是os.scandir()
,使用如下:
import ospath = 'xxx'
for file in os.scandir(path): print(file.name, file.path)
八、批处理文件 - 2
上面代码最后输出的是 给定路径下各内容的名字、绝对路径第二种方法使用 os.listdir()
,它比 os.scandir()
简单一些,可直接调用输出名称而非路径:
import os path = 'xxx'
for file in os.listdir(path):print(file)
02
shutil模块相关
九、移动文件/文件夹
shutil
也是经常出现在办公自动化场景中的模块,我常用的就是移动文件/文件夹。
需要用到shutil.move
方法,下面的代码示例中分别演示如何移动文件和文件夹:
import shutil shutil.move(r'.\practice.txt', r'.\文件夹1/')
shutil.move(r'.\practice.txt', r'.\文件夹1/new.txt')
注意到上面后两行代码的区别吗?前一行是将目标文件移动到目标文件夹里,而后一行,在将目标文件移动到目标文件夹里的同时,能够对其进行重命名
也就是说,如果我们需要移动某个或某些文件到新的文件夹,并且需重命名文件,则我们并不需要用 os.rename
先命名文件再用 shutil.move
将其移动的指定文件夹,而是可以用 shutil.move
一步到位
03
glob模块相关
十、批处理文件 - 3
最后要介绍的是glob
模块,也是办公自动化必须要掌握的一个模块,同样可以用于批处理文件。
glob
最重要的功能就是搜索获取同一级或者各子级下符合条件的文件(绝对路径),非常适合写批处理的代码。
有时候我们需要对大量文件进行相同操作,在写完针对一份文件的操作后,只需要加上几行代码,就可以完成批处理全部文件的工作。大致代码框架如下:
import globfor file in glob.glob('**/*', recursive=True): print(file)
glob.glob()
是一个非常重要的方法,能够获取给定路径下文件的绝对路径,并且接受「通配符」搜索,大大拓宽了灵活程度,*
表示任意字符长度,**/*
的使用表示用通配符指代给定路径下的任何一层,recursive
参数允许遍历搜索。
以上就是我为大家整理的十个常用操作的代码,大部分都是可以通用的,大家可以收藏本文,并在需要进行相关操作的时候可以直接复制粘贴使用。
另外也希望大家在自己写代码、读别人代码时,可以多去思考哪些函数/代码片段是可以为我所用,这样才会进步的更快!
如果喜欢本文的话,可以给我点一个赞,你的支持是我创作的最大动力!
-END-
更多Python办公自动化案例实战
点击下方图片直达????
点击阅读原文
查看早起Python的办公自动化私教班!
精选十大案例,手把手带你复现 + 需求解决 + 答疑????
写了四十篇办公自动化文章后,我整理了这十个常用操作,代码拿走就用!相关推荐
- 钟汉良日记:为何我持续写日记四十天后,让他精神层面完全被影响?
2022年10月7日 周五 天气晴 看山是山,看水是水.看山不是山,看水不是水.看山还是山,看水还是水.这三种境界,被人描述在不同的语境里,用来传达不同的价值诉求. 我们年轻的朋友,初次看到这三句话时 ...
- 分析手机网站的优势思维结构图_写了100多篇原创文章,我常用的在线工具网站推荐给大家...
摘要 不知不觉写博客已经一年多了,累计写了100多篇原创文章,今天给大家分享下我经常使用的在线工具网站,希望对大家有所帮助! Markdown Nice 支持自定义样式的在线Markdown编辑器,编 ...
- 网络拓扑图画图工具_写了100多篇原创文章,我常用的在线工具网站推荐给大家!...
不知不觉写博客已经一年多了,累计写了100多篇原创文章,今天给大家分享下我经常使用的在线工具网站,希望对大家有所帮助! Markdown Nice 支持自定义样式的在线Markdown编辑器,编辑完成 ...
- 写给四十岁女人的箴言,写给四十岁男人的忠告
1.四十岁的女人,子女尚未长大,老公已经开花.这是一个让女人最焦灼.困惑的年龄,也是女人一生中最敏感.关键的过渡.要开始修心养性,要做到语调平缓.目光柔和.神态优雅.举止从容. 2.四十岁的女人,在事 ...
- 人体冷冻技术科学家称四十年内实现冷冻后复活,实现起死回生和长生不死
人体冷冻技术科学家称四十年内实现冷冻后复活,实现起死回生和长生不死 四十年内实现"起死回生"?揭秘人体冷冻技术_新闻频道_中国青年网 http://news.youth.cn/kj ...
- 写给四十岁男人的忠告
01 .四十岁的男人,如果还没有结婚,就别结了.无论你是一次未娶还是多次失败,你的身心已经到了不健康的地步,再把这种不健康带给别人是不负责任的.如果可以做到清心寡欲,独自漫步,也能活的自在. 02.四 ...
- 智能优化算法-阿里巴巴和四十大盗算法Ali baba and the Forty Thieves algorithm(附Matlab代码)
引言 阿里巴巴和四十大盗算法Ali baba and the Forty Thieves algorithm是一种新的元启发式算法,用于解决全局优化问题.回想一下著名的阿里巴巴和四十大盗的故事,阿里巴 ...
- “约见”面试官系列之常见面试题第四十篇之双向绑定以及实现原理(建议收藏)
目录 MVC模式 MVVM模式 双向绑定原理 1.实现一个Observer 2.实现一个Watcher 3.实现一个Compile 4.实现一个MVVM 最后写一个html测试一下我们的功能 MVC模 ...
- 电子海图开发第四十篇 , s63电子海图的概述(共一百篇)
s63不是一种新的格式的海图,他是s57格式的电子海图加密形式,主要是为了保护电子海图不被随意的复制,和船舶传统的数据保护方案倾向于通过协议或合同的形式约束数据发布方和数据使用方之间的相互责任,但这并 ...
- 【leetcode 简单】第四十二题 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! = 120, 尾数中有 ...
最新文章
- Sysinternals Suite 2012.06.28软件简介
- 图的两种存储方式---邻接矩阵和邻接表
- 编程实现将一个N进制数转换成M进制数
- 软件工程心理学之3---甲方项目负责人 PK 乙方
- xfce开始菜单增加一个新的图标
- Java Math类toDegrees()方法与示例
- Chrome 调试动态加载的js
- python 制作自己的新闻_用Python制作一个每日新闻热点爬虫脚本
- nodejs cluster_NodeJS下好用的Redis客户端ioredis,再推荐一个Redis可视化工具
- vmware-vmx.exe无法结束进程_孤儿进程与僵尸进程产生原理分析,以及终极解决方案案例实现...
- 深入理解ButterKnife源码并掌握原理(四)
- Excel文件导入web页面
- 全新自助任务平台WQ源码对接微信带分类信息线报完美运营驴赚网全量开源发布
- Flash视频播放器开发经验总结
- bandizip修改压缩文件内容_BandiZip解压添加压缩文件教程
- 蚂蚁金服刘伟光:我们为什么要科技开放
- 项目管理的10个经典故事
- curl常用命令的使用
- 一道搜狗机试题的解答
- 百度AI的时代献礼:与央视搭AI秀台,让万物智能样貌清晰可见