• 编程小白的自学笔记十四(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循环来调用,我们用代码来看看输出的是什么:

    1. import os
    2. for file in os.scandir():
    3. print(file)

     输出结果为:

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

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

     输出为:

     

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

    1. import os
    2. for file in os.scandir():
    3. print(file.stat().st_ctime)

    确实输出时间了,但是是我们看不懂的时间:

    1688730869.341578

    1687012891.5642674

    1687068649.1589775

     下面我们使用datetime,将时间格式改成我们日常生活中使用的时间格式:

    1. import os
    2. import datetime
    3. for file in os.scandir():
    4. 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.创建临时文件

    我们来看一个简单的代码,学习下怎样创建临时文件: 

    1. from tempfile import TemporaryFile
    2. with TemporaryFile('w+') as file:
    3. file.write('我是一个临时文件')
    4. print(file.name)
    5. file.seek(0)
    6. print(file.readlines())

     输出结果为:

    C:\Users\ADMINI~1\AppData\Local\Temp\tmpdms710yj

    ['我是一个临时文件']

     可以看出,这个文件的地址是“C:\Users\ADMINI~1\AppData\Local\Temp\tmpdms710yj”,file.seek(0)的意思是把光标移动到最开始的位置,然后读取,我们可以试试是否是从光标的位置读取,例如下面代码:

    1. from tempfile import TemporaryFile
    2. with TemporaryFile('w+') as file:
    3. file.write('我是一个临时文件')
    4. print(file.name)
    5. file.seek(4)
    6. print(file.readlines())

     按照我们上面说的,应该是从第四个字节开始读取,输出结果是

    C:\Users\ADMINI~1\AppData\Local\Temp\tmp82yzs4dc

    ['一个临时文件']

     我们可以看见文件的地址换了,说明确实是临时文件,之前的文件已经删除,同时一个汉字两个字节,所以“我是”没有了,从后面开始读取,内容为“一个临时文件”。

     2.创建临时文件夹

    下面我们再看看临时文件夹怎么创建,代码如下:

    1. from tempfile import TemporaryDirectory
    2. with TemporaryDirectory() as t:
    3. print(t)

    输出结果为:

    C:\Users\ADMINI~1\AppData\Local\Temp\tmpcy74dyo0

    很明显,这就是临时文件夹的位置,我们再运行一次程序,理论上文件夹的名字是要变化的,是创建了一个新文件夹,我们来试下,输出结果为:

    C:\Users\ADMINI~1\AppData\Local\Temp\tmpx_kr8bau

    三、创建文件夹和多层文件夹

     1、创建文件夹

     首先使用mkdir创建文件夹,代码如下

    1. Import os
    2. os.mkdir(‘文件夹1’)

     这时我们创建了文件夹名字叫“文件夹1”的文件夹,这里要注意,不能创建已有的文件夹,系统会报错。

     2、创建多层文件夹

     在Python中,可以使用`os.makedirs()`函数来创建文件夹和多层文件夹。该函数可以递归地创建多级目录,如果目录已经存在,则不会报错。

     以下是使用`os.makedirs()`函数创建文件夹和多层文件夹的示例代码:

    1. import os
    2. # 创建一个名为"my_folder"的文件夹
    3. if not os.path.exists("my_folder"):
    4. os.makedirs("my_folder")
    5. # 在"my_folder"文件夹下创建一个名为"sub_folder"的子文件夹
    6. if not os.path.exists("my_folder/sub_folder"):
    7. os.makedirs("my_folder/sub_folder")
    8. # 在"my_folder/sub_folder"文件夹下创建一个名为"grand_sub_folder"的子文件夹
    9. if not os.path.exists("my_folder/sub_folder/grand_sub_folder"):
    10. os.makedirs("my_folder/sub_folder/grand_sub_folder")

     在上面的代码中,我们首先检查是否存在名为"my_folder"的文件夹,如果不存在,则使用`os.makedirs()`函数创建它。然后,我们在"my_folder"文件夹下创建一个名为"sub_folder"的子文件夹,并在其中创建一个名为"grand_sub_folder"的子文件夹。注意,在创建多层文件夹时,需要使用相对路径或绝对路径来指定要创建的文件夹名称。

    其实可以直接创建最里层的文件夹,代码如下

    1. Import os
    2. os.makedirs(‘第一层文件夹/第二层文件夹/第三层文件夹’)

    这样就直接把第一层文件夹、第二层文件夹和第三层文件夹都创建出来了

     四、复制文件和文件夹

     在Python中,我们可以使用`shutil`模块中的函数来复制文件和文件夹。对于文件,我们可以使用`shutil.copy()`函数来复制文件,它接受两个参数:源文件路径和目标文件路径。对于文件夹,我们可以使用`shutil.copytree()`函数来复制整个文件夹,它也接受两个参数:源文件夹路径和目标文件夹路径。

     以下是一个示例代码,演示了如何使用`shutil`模块中的函数来复制文件和文件夹:

    1. import shutil
    2. # 复制文件
    3. shutil.copy('source_file.txt', 'destination_file.txt')
    4. # 复制文件夹
    5. 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`模块中的函数来移动文件和文件夹:

    1. import shutil
    2. import os
    3. # 移动文件
    4. shutil.move('source_file.txt', 'destination_file.txt')
    5. # 移动文件夹
    6. src_folder = 'source_folder'
    7. dst_folder = 'destination_folder'
    8. if os.path.exists(src_folder):
    9. shutil.rmtree(src_folder)
    10. shutil.copytree(src_folder, dst_folder)
    11. os.remove(src_folder)

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


    总结

  • 相关阅读:
    WebKit Inside: CSS 样式表解码字符集
    C. Rings---Codeforces Round #741 (Div. 2)
    阿里云高庆瑞:高弹性、高可用、低成本的云上资源管理最佳实践
    事实 读书笔记
    SpringBootWeb登录认证
    JavaWeb学习路线(1)——Ajax到Axios
    人均瑞数系列,瑞数 6 代 JS 逆向分析
    LeetCode216. Combination Sum III
    【Unity3D】Android 打包 ③ ( Android 工程设置 | 打包 Apk 安装文件 )
    Postgresql 阿里云部署排雷
  • 原文地址:https://blog.csdn.net/m0_49914128/article/details/132841778