编程小白的自学笔记十四(python办公自动化创建、复制、移动文件和文件夹)

简介: 编程小白的自学笔记十四(python办公自动化创建、复制、移动文件和文件夹)

前言

在自学笔记一的时候我已经学了文件的读写,那是学的基础,现在是开始学习办公自动化,要多角度、深度了解。


一、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()`函数来复制整个文件夹,它也接受两个参数:源文件夹路径和目标文件夹路径。

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()`函数删除源文件夹。


总结

以上就是今天要讲的内容。

相关文章
|
2月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
22天前
|
人工智能 自然语言处理 IDE
通义灵码让AI帮你实现自动化编程
通义灵码是由阿里云与通义实验室联合开发的智能编码辅助工具,具备行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答及异常报错排查等功能。该工具支持200多种编程语言,兼容主流IDE,如Visual Studio Code、Visual Studio和JetBrains IDEs。通义灵码在Gartner发布的AI代码助手魔力象限中表现出色,成为唯一进入挑战者象限的中国科技公司。目前,通义灵码下载量已超过470万,每日辅助生成代码超3000万次,被开发者广泛采用。
|
25天前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
24 2
|
2月前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
|
2月前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
2月前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
68 4
|
2月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
59 4
|
17天前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####
|
27天前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
51 4
|
2月前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。