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

2023年 9月 16日 81.9k 0

#编程小白的自学笔记十四(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)

 输出结果为:

 将目录下所有的文件都输出了,我们可以继续调用stat()方法,查看文件的属性。代码如下:

import os
for file in os.scandir():
    print(file.stat())

 输出为:

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

 可以看出,内容里面包含文件的大小,还有文件的创建时间、修改时间和访问时间。我们来试试输出文件的创建时间:

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\ADMINI1\AppData\Local\Temp\tmpcy74dyo0
很明显,这就是临时文件夹的位置,我们再运行一次程序,理论上文件夹的名字是要变化的,是创建了一个新文件夹,我们来试下,输出结果为:
C:\Users\ADMINI1\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)

 在上面的代码中,我们首先导入了shutilos模块。然后,我们使用shutil.move()函数将名为"source_file.txt"的文件移动到名为"destination_file.txt"的新文件中。接下来,我们定义了源文件夹路径src_folder和目标文件夹路径dst_folder,并检查源文件夹是否存在。如果存在,则使用shutil.rmtree()函数删除它。然后,我们使用shutil.copytree()函数将源文件夹复制到目标文件夹。最后,我们使用os.remove()函数删除源文件夹。

总结

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论