当前位置: 首页 > news >正文

编程小白的自学笔记十四(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办公自动化创建、复制、移动文件和文件夹)

系列文章目录 编程小白的自学笔记十三&#xff08;python办公自动化读写文件&#xff09; 编程小白的自学笔记十二&#xff08;python爬虫入门四Selenium的使用实例二&#xff09; 编程小白的自学笔记十一&#xff08;python爬虫入门三Selenium的使用实例详解&#xff09; …...

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 概念 一阶差分是指对一个数列中的每个元素&#xff0c;计算其与其前一个元素之差的操作。 1.2 举例 举例来说&#xff0c;对…...

使用自定义注解和SpringAOP捕获Service层异常,并处理自定义异常

目录 一 自定义异常二 自定义注解三 注解切面处理类四 使用 一 自定义异常 /*** 自定义参数为null异常*/ public class NoParamsException extends Exception {//用详细信息指定一个异常public NoParamsException(String message){super(message);}//用指定的详细信息和原因构…...

Kotlin(六) 类

目录 创建类 调用类 类的继承------open 构造函数 创建类 创建类和创建java文件一样&#xff0c;选择需要创建的目录New→Kotlin File/Class Kotlin中也是使用class关键字来声明一个类的&#xff0c;这一点和Java一致。现在我们可以在这个类中加入字段和函数来丰富它的功…...

蓝桥杯官网练习题(灌溉)

题目描述 小蓝负责花园的灌溉工作。 花园可以看成一个 n 行 m 列的方格图形。中间有一部分位置上安装有出水管。 小蓝可以控制一个按钮同时打开所有的出水管&#xff0c;打开时&#xff0c;有出水管的位置可以被认为已经灌溉好。 每经过一分钟&#xff0c;水就会向四面扩展…...

数据结构:树的概念和结构

文章目录 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漏洞-文件操作之文件下载读取全解

目录 介绍利用获取数据库配置文件文件名&#xff0c;参数值&#xff0c;目录符号 涉及案例: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 是由微软打造的动态链接库&#xff0c;它对于一些图形密集型应用&#xff0c;例如Photoshop&#xff0c;以及多款知名游戏如巫师3的运行至关重要。 如果操作系统在启动应用程序时无法找到此vcomp100.dll&#xff0c;则会出现vcomp100.dll丢失或未找到错误。 如果D…...

Vue3自定义指令(directive)

文章目录 前言一、Vue3指令钩子函数二、自定义指令的两种方式1.局部使用例子1&#xff1a;鉴权例子2&#xff1a;拖拽 2.全局使用例子1&#xff1a;监听宽高指令例子2&#xff1a;监听是否出现在视口 总结 前言 此文章主要讲了vue3中自定义指令的使用&#xff0c;以及一些WebA…...

大数据课程L9——网站流量项目的实时业务处理代码

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握网站流量项目的SparkStreaming代码; ⚪ 掌握网站流量项目的HBaseUtil代码; ⚪ 掌握网站流量项目的MysqlUtil代码; ⚪ 掌握网站流量项目的LogBean代码; ⚪ 掌握网站流量项目的To…...

【2023最新B站评论爬虫】用python爬取上千条哔哩哔哩评论

文章目录 一、爬取目标二、展示爬取结果三、爬虫代码四、同步视频五、附完整源码 您好&#xff0c;我是 马哥python说&#xff0c;一枚10年程序猿。 一、爬取目标 之前&#xff0c;我分享过一些B站的爬虫&#xff1a; 【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 学习目的是在无人工标注的情况下通过自定制的任务&#xff08;hand-crafted pretext tasks&#xff09;学习丰富的表示。 Abstract 使用自监督学习为卷积网络&#xff08;CNN&#xff09;学习表示已经被验证对视觉任务有效。作为CNN的一种替代…...

遥感数据与作物模型同化应用:PROSAIL模型、DSSAT模型、参数敏感性分析、数据同化算法、模型耦合、精度验证等主要环节

查看原文>>>遥感数据与作物模型同化实践技术应用 基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具&#xff0c;可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系&#xff0c;为不同条件下作物生长发育及…...

Navicat15工具连接PostgreSQL15失败

1.错误现象及原因 错误现象&#xff1a; 错误原因&#xff1a; postgresql 15版本中 pg_database 系统表把 datlastsysoid 列删除了&#xff0c;所以造成了此错误。 2.解决方法 &#xff08;1&#xff09;将Navicat工具更新到官网最新版本。 &#xff08;2&#xff09;更换…...

开源AI家庭自动化助手-手机控制家庭智能家居服务

产品简介 将本地控制和隐私放在首位的开源家庭自动化。由全球开发者和 DIY 爱好者社区提供支持。非常适合在 Raspberry Pi 或本地服务器上运行。 功能介绍 1. 控制面板在控制面板&#xff0c;你可以查看家庭的灯光&#xff0c;温度&#xff0c;门铃&#xff0c;音响&#xf…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

基于鸿蒙(HarmonyOS5)的打车小程序

1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...