编程小白的自学笔记十四(python办公自动化创建、复制、移动文件和文件夹)
系列文章目录
编程小白的自学笔记十三(python办公自动化读写文件)
编程小白的自学笔记十二(python爬虫入门四Selenium的使用实例二)
编程小白的自学笔记十一(python爬虫入门三Selenium的使用+实例详解)
编程小白的自学笔记十(python爬虫入门二+实例代码详解)
编程小白的自学笔记九(python爬虫入门+代码详解)
目录
系列文章目录
文章目录
前言
一、os.scandir()
二、临时文件和临时文件夹
1.创建临时文件
2.创建临时文件夹
三、创建文件夹和多层文件夹
1、创建文件夹
2、创建多层文件夹
四、复制文件和文件夹
五、移动文件和文件夹
总结
前言
在自学笔记一的时候我已经学了文件的读写,那是学的基础,现在是开始学习办公自动化,要深入学习了。
一、os.scandir()
os.scandir() 是 Python 中的一个函数,用于获取文件系统中目录的迭代器。它可以遍历指定目录中的所有条目,包括文件和子目录。os.scandir() 方法返回一个 os.DirEntry 迭代器对象,它非常轻巧方便,并且能告诉你迭代文件的路径。
使用 os.scandir() 方法比使用 os.walk() 方法更高效,因为 os.walk() 方法会遍历整个目录树,而 os.scandir() 方法只会遍历指定目录。
os.scandir() 返回的迭代器对象需要用for循环来调用,我们用代码来看看输出的是什么:
import os
for file in os.scandir():print(file)
输出结果为:
<DirEntry 'Dome.py'>
<DirEntry 'new.xls'>
<DirEntry '表格合并.py'>
将目录下所有的文件都输出了,我们可以继续调用stat()方法,查看文件的属性。代码如下:
import os
for file in os.scandir():print(file.stat())
输出为:

可以看出,内容里面包含文件的大小,还有文件的创建时间、修改时间和访问时间。我们来试试输出文件的创建时间:
import os
for file in os.scandir():print(file.stat().st_ctime)
确实输出时间了,但是是我们看不懂的时间:
1688730869.341578
1687012891.5642674
1687068649.1589775
下面我们使用datetime,将时间格式改成我们日常生活中使用的时间格式:
import os
import datetime
for file in os.scandir():print(datetime.datetime.fromtimestamp(file.stat().st_ctime))
输出为:
2023-07-07 19:54:29.341578
2023-06-17 22:41:31.564267
2023-06-18 14:10:49.158978
二、临时文件和临时文件夹
tempfile()是Python标准库中的一个模块,用于创建临时文件和目录。它可以跨平台使用,包括Windows、Linux和macOS等。该模块提供了四个函数:TemporaryFile()、NamedTemporaryFile()、TemporaryDirectory()和SpooledTemporaryFile(),这些函数都带有自动清理功能,可用作上下文管理器。其中,TemporaryFile()和NamedTemporaryFile()是最常见的两个函数,它们都可以创建一个临时文件对象,当文件对象被关闭时,临时文件将被自动删除。而TemporaryDirectory()和SpooledTemporaryFile()则是用于创建临时目录和缓冲区文件的函数。
1.创建临时文件
我们来看一个简单的代码,学习下怎样创建临时文件:
from tempfile import TemporaryFile
with TemporaryFile('w+') as file:file.write('我是一个临时文件')print(file.name)file.seek(0)
print(file.readlines())
输出结果为:
C:\Users\ADMINI~1\AppData\Local\Temp\tmpdms710yj
['我是一个临时文件']
可以看出,这个文件的地址是“C:\Users\ADMINI~1\AppData\Local\Temp\tmpdms710yj”,file.seek(0)的意思是把光标移动到最开始的位置,然后读取,我们可以试试是否是从光标的位置读取,例如下面代码:
from tempfile import TemporaryFile
with TemporaryFile('w+') as file:file.write('我是一个临时文件')print(file.name)file.seek(4)print(file.readlines())
按照我们上面说的,应该是从第四个字节开始读取,输出结果是
C:\Users\ADMINI~1\AppData\Local\Temp\tmp82yzs4dc
['一个临时文件']
我们可以看见文件的地址换了,说明确实是临时文件,之前的文件已经删除,同时一个汉字两个字节,所以“我是”没有了,从后面开始读取,内容为“一个临时文件”。
2.创建临时文件夹
下面我们再看看临时文件夹怎么创建,代码如下:
from tempfile import TemporaryDirectory
with TemporaryDirectory() as t:print(t)
输出结果为:
C:\Users\ADMINI~1\AppData\Local\Temp\tmpcy74dyo0
很明显,这就是临时文件夹的位置,我们再运行一次程序,理论上文件夹的名字是要变化的,是创建了一个新文件夹,我们来试下,输出结果为:
C:\Users\ADMINI~1\AppData\Local\Temp\tmpx_kr8bau
三、创建文件夹和多层文件夹
1、创建文件夹
首先使用mkdir创建文件夹,代码如下
Import os
os.mkdir(‘文件夹1’)
这时我们创建了文件夹名字叫“文件夹1”的文件夹,这里要注意,不能创建已有的文件夹,系统会报错。
2、创建多层文件夹
在Python中,可以使用`os.makedirs()`函数来创建文件夹和多层文件夹。该函数可以递归地创建多级目录,如果目录已经存在,则不会报错。
以下是使用`os.makedirs()`函数创建文件夹和多层文件夹的示例代码:
import os# 创建一个名为"my_folder"的文件夹
if not os.path.exists("my_folder"):os.makedirs("my_folder")# 在"my_folder"文件夹下创建一个名为"sub_folder"的子文件夹
if not os.path.exists("my_folder/sub_folder"):os.makedirs("my_folder/sub_folder")# 在"my_folder/sub_folder"文件夹下创建一个名为"grand_sub_folder"的子文件夹
if not os.path.exists("my_folder/sub_folder/grand_sub_folder"):os.makedirs("my_folder/sub_folder/grand_sub_folder")
在上面的代码中,我们首先检查是否存在名为"my_folder"的文件夹,如果不存在,则使用`os.makedirs()`函数创建它。然后,我们在"my_folder"文件夹下创建一个名为"sub_folder"的子文件夹,并在其中创建一个名为"grand_sub_folder"的子文件夹。注意,在创建多层文件夹时,需要使用相对路径或绝对路径来指定要创建的文件夹名称。
其实可以直接创建最里层的文件夹,代码如下
Import os os.makedirs(‘第一层文件夹/第二层文件夹/第三层文件夹’)这样就直接把第一层文件夹、第二层文件夹和第三层文件夹都创建出来了
四、复制文件和文件夹
在Python中,我们可以使用`shutil`模块中的函数来复制文件和文件夹。对于文件,我们可以使用`shutil.copy()`函数来复制文件,它接受两个参数:源文件路径和目标文件路径。对于文件夹,我们可以使用`shutil.copytree()`函数来复制整个文件夹,它也接受两个参数:源文件夹路径和目标文件夹路径。
以下是一个示例代码,演示了如何使用`shutil`模块中的函数来复制文件和文件夹:
import shutil# 复制文件
shutil.copy('source_file.txt', 'destination_file.txt')# 复制文件夹
shutil.copytree('source_folder', 'destination_folder')
在上面的代码中,我们首先导入了`shutil`模块。然后,我们使用`shutil.copy()`函数将名为"source_file.txt"的文件复制到同样的位置,并重命名为"destination_file.txt"的新文件。接下来,我们使用`shutil.copytree()`函数将名为"source_folder"的文件夹复制到名为"destination_folder"的新文件夹中。请注意,如果目标文件夹不存在,则会自动创建它,如果目标文件夹已存在就会报错。
五、移动文件和文件夹
在Python中,我们可以使用`shutil`模块中的函数来移动文件和文件夹。对于文件,我们可以使用`shutil.move()`函数来移动文件,它接受两个参数:源文件路径和目标文件路径。对于文件夹,我们可以使用`shutil.rmtree()`函数先删除原文件夹,然后使用`shutil.copytree()`函数将文件夹复制到新位置,最后使用`os.remove()`函数删除原文件夹。
以下是一个示例代码,演示了如何使用`shutil`模块中的函数来移动文件和文件夹:
import shutil
import os# 移动文件
shutil.move('source_file.txt', 'destination_file.txt')# 移动文件夹
src_folder = 'source_folder'
dst_folder = 'destination_folder'
if os.path.exists(src_folder):shutil.rmtree(src_folder)
shutil.copytree(src_folder, dst_folder)
os.remove(src_folder)
在上面的代码中,我们首先导入了`shutil`和`os`模块。然后,我们使用`shutil.move()`函数将名为"source_file.txt"的文件移动到名为"destination_file.txt"的新文件中。接下来,我们定义了源文件夹路径`src_folder`和目标文件夹路径`dst_folder`,并检查源文件夹是否存在。如果存在,则使用`shutil.rmtree()`函数删除它。然后,我们使用`shutil.copytree()`函数将源文件夹复制到目标文件夹。最后,我们使用`os.remove()`函数删除源文件夹。
总结
无
相关文章:
编程小白的自学笔记十四(python办公自动化创建、复制、移动文件和文件夹)
系列文章目录 编程小白的自学笔记十三(python办公自动化读写文件) 编程小白的自学笔记十二(python爬虫入门四Selenium的使用实例二) 编程小白的自学笔记十一(python爬虫入门三Selenium的使用实例详解) …...
MySQL使用Xtrabackup备份到AWS存储桶
1.安装Xtrabackup cd /tmp wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.33-28/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpm yum -y localinstall percona-xtrabackup-80-8.0.33-28.1.el7.x86…...
(高阶)Redis 7 第11讲 BIGKEY 优化篇
面试题 问题答案如何在海量数据中查询某一固定前缀的Keyscan生产环境如何限制 keys */FLUSHDB/FLUSHALL 等危险命令,防止误删误用# 修改配置文件 rename-command keys "" rename-command flushdb "" rename-command flushall ""如何使用MEMORY U…...
一阶差分和二阶差分概念及其举例
一阶差分和二阶差分概念及其举例 目录 一阶差分和二阶差分概念及其举例1、一阶差分1.1 概念1.2 举例 2、二阶差分2.1 概念2.2 举例 1、一阶差分 1.1 概念 一阶差分是指对一个数列中的每个元素,计算其与其前一个元素之差的操作。 1.2 举例 举例来说,对…...
使用自定义注解和SpringAOP捕获Service层异常,并处理自定义异常
目录 一 自定义异常二 自定义注解三 注解切面处理类四 使用 一 自定义异常 /*** 自定义参数为null异常*/ public class NoParamsException extends Exception {//用详细信息指定一个异常public NoParamsException(String message){super(message);}//用指定的详细信息和原因构…...
Kotlin(六) 类
目录 创建类 调用类 类的继承------open 构造函数 创建类 创建类和创建java文件一样,选择需要创建的目录New→Kotlin File/Class Kotlin中也是使用class关键字来声明一个类的,这一点和Java一致。现在我们可以在这个类中加入字段和函数来丰富它的功…...
蓝桥杯官网练习题(灌溉)
题目描述 小蓝负责花园的灌溉工作。 花园可以看成一个 n 行 m 列的方格图形。中间有一部分位置上安装有出水管。 小蓝可以控制一个按钮同时打开所有的出水管,打开时,有出水管的位置可以被认为已经灌溉好。 每经过一分钟,水就会向四面扩展…...
数据结构:树的概念和结构
文章目录 1. 树的概念2. 树的结构3. 树的相关概念4. 树的表示孩子表示法双亲表示法孩子兄弟表示法 5. 树在实际中的应用5. 树在实际中的应用 1. 树的概念 树是一种非线性的数据结构,它是由 n (n > 0)个有限结点组成一个具有层次关系的. 把它叫做树是因为它看起来像一棵倒挂的…...
【GIS】栅格转面报错:ERROR 000864输入栅格: 输入不在定义的属性域内。 ERROR 000863: 无效的 GP 数据类型
问题: 栅格转面(矢量)时,ArcGIS窗口显示:ERROR 000864输入栅格: 输入不在定义的属性域内。 ERROR 000863: 无效的 GP 数据类型. 原因: 栅格转面时输入的栅格数据集的字段必须是整型. 解决办法: 使用Spatial Analyst中的转为整型工具,将栅格数据转为整型后再进行栅格转面的操作…...
32 WEB漏洞-文件操作之文件下载读取全解
目录 介绍利用获取数据库配置文件文件名,参数值,目录符号 涉及案例:Pikachu-文件下载测试-参数Zdns-文件下载真实测试-功能点小米路由器-文件读取真实测试-漏洞RoarCTF2019-文件读取真题复现-比赛百度杯2017二月-Zone真题复现-比赛拓展 下载和读取都差不…...
Linux之history、tab、alias、命令执行顺序、管道符以及exit
目录 Linux之history、tab、alias、命令执行顺序、管道符以及exit history历史命令 格式 参数 修改默认记录历史命令条数 案例 案例1 --- 显示history历史记录中出现次数最高的top10 案例2 --- 增加history显示的时间信息 命令与文件名补全 --- tab 命令别名 格式 案…...
vcomp100.dll丢失怎样修复?5个靠谱的修复方法分享
VCOMP100.DLL 是由微软打造的动态链接库,它对于一些图形密集型应用,例如Photoshop,以及多款知名游戏如巫师3的运行至关重要。 如果操作系统在启动应用程序时无法找到此vcomp100.dll,则会出现vcomp100.dll丢失或未找到错误。 如果D…...
Vue3自定义指令(directive)
文章目录 前言一、Vue3指令钩子函数二、自定义指令的两种方式1.局部使用例子1:鉴权例子2:拖拽 2.全局使用例子1:监听宽高指令例子2:监听是否出现在视口 总结 前言 此文章主要讲了vue3中自定义指令的使用,以及一些WebA…...
大数据课程L9——网站流量项目的实时业务处理代码
文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握网站流量项目的SparkStreaming代码; ⚪ 掌握网站流量项目的HBaseUtil代码; ⚪ 掌握网站流量项目的MysqlUtil代码; ⚪ 掌握网站流量项目的LogBean代码; ⚪ 掌握网站流量项目的To…...
【2023最新B站评论爬虫】用python爬取上千条哔哩哔哩评论
文章目录 一、爬取目标二、展示爬取结果三、爬虫代码四、同步视频五、附完整源码 您好,我是 马哥python说,一枚10年程序猿。 一、爬取目标 之前,我分享过一些B站的爬虫: 【Python爬虫案例】用Python爬取李子柒B站视频数据 【Pyt…...
mysql设置max_sp_recursion_depth,sql_mode
mysql 中设置 @@max_sp_recursion_depth select @@max_sp_recursion_depth; 今天在mysql 写存储过程递归调用时,发现老是报错(recovery limit 0(as set by the max_sp_recursion_depth));后来百度下发现 max_sp_recursion_depth设置不对; 这个修改涉及到全局和session级修…...
论文阅读:SERE: Exploring Feature Self-relation for Self-supervised Transformer
Related Work Self-supervised 学习目的是在无人工标注的情况下通过自定制的任务(hand-crafted pretext tasks)学习丰富的表示。 Abstract 使用自监督学习为卷积网络(CNN)学习表示已经被验证对视觉任务有效。作为CNN的一种替代…...
遥感数据与作物模型同化应用:PROSAIL模型、DSSAT模型、参数敏感性分析、数据同化算法、模型耦合、精度验证等主要环节
查看原文>>>遥感数据与作物模型同化实践技术应用 基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具,可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系,为不同条件下作物生长发育及…...
Navicat15工具连接PostgreSQL15失败
1.错误现象及原因 错误现象: 错误原因: postgresql 15版本中 pg_database 系统表把 datlastsysoid 列删除了,所以造成了此错误。 2.解决方法 (1)将Navicat工具更新到官网最新版本。 (2)更换…...
开源AI家庭自动化助手-手机控制家庭智能家居服务
产品简介 将本地控制和隐私放在首位的开源家庭自动化。由全球开发者和 DIY 爱好者社区提供支持。非常适合在 Raspberry Pi 或本地服务器上运行。 功能介绍 1. 控制面板在控制面板,你可以查看家庭的灯光,温度,门铃,音响…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
Unity VR/MR开发-VR开发与传统3D开发的差异
视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...
Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...
TCP/IP 网络编程 | 服务端 客户端的封装
设计模式 文章目录 设计模式一、socket.h 接口(interface)二、socket.cpp 实现(implementation)三、server.cpp 使用封装(main 函数)四、client.cpp 使用封装(main 函数)五、退出方法…...
【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...
