详解Python 根据名称创建存档和查找文件

  • Post category:Python

为了根据名称创建存档或查找文件,可以使用Python标准库中的os模块,该模块提供了一系列与操作系统交互的函数和变量。下面是详细的Python根据名称创建存档和查找文件的攻略:

根据名称创建存档

1. 使用os模块创建存档

import os

current_dir = os.getcwd()  # 获取当前工作目录
folder_name = "my_folder"  # 要创建的文件夹名称
file_name = "my_archive.zip"  # 要创建的存档文件名称

folder_path = os.path.join(current_dir, folder_name)  # 拼接要创建的文件夹的完整路径
os.makedirs(folder_path, exist_ok=True)  # 创建文件夹,如果已经存在,则不会报错

archive_path = os.path.join(current_dir, file_name)  # 拼接要创建的存档文件的完整路径
os.system(f"zip -r {archive_path} {folder_name}")  # 创建存档文件,使用zip命令行工具

上述代码中,使用os模块中的getcwd()函数获取当前工作目录,使用os.path.join()函数拼接完整路径,使用os.makedirs()函数创建文件夹,如果已经存在,则不会报错。使用os.system()函数执行zip命令行工具将文件夹压缩为存档文件,存档文件的命名可以自行定义。

2. 使用shutil模块创建存档

除了使用os模块的系统命令,还可以使用shutil模块提供的高级操作,更加稳定、方便。

import os
import shutil

current_dir = os.getcwd()  # 获取当前工作目录
folder_name = "my_folder"  # 要创建的文件夹名称
file_name = "my_archive.zip"  # 要创建的存档文件名称

folder_path = os.path.join(current_dir, folder_name)  # 拼接要创建的文件夹的完整路径
os.makedirs(folder_path, exist_ok=True)  # 创建文件夹,如果已经存在,则不会报错

archive_path = os.path.join(current_dir, file_name)  # 拼接要创建的存档文件的完整路径
shutil.make_archive(archive_path, "zip", folder_path)  # 创建存档文件,使用shutil模块自带的函数

上述代码中,使用os模块中的getcwd()函数获取当前工作目录,使用os.path.join()函数拼接完整路径,使用os.makedirs()函数创建文件夹,如果已经存在,则不会报错。使用shutil模块中的make_archive()函数创建存档文件,第一个参数是文件名,第二个参数是压缩类型,第三个参数是要压缩的文件夹。

根据名称查找文件

1. 使用os模块查找文件

import os

current_dir = os.getcwd()  # 获取当前工作目录
file_name = "my_file.txt"  # 要查找的文件名称

for root, dirs, files in os.walk(current_dir):  # 递归查找当前目录下的所有文件和子目录
    if file_name in files:  # 如果文件在当前目录下的文件列表中,则输出文件的完整路径
        file_path = os.path.join(root, file_name)
        print(file_path)

上述代码中,使用os模块中的getcwd()函数获取当前工作目录,使用os.walk()函数递归查找当前目录下的所有文件和子目录,如果文件在当前目录下的文件列表中,则输出文件的完整路径。使用os.path.join()函数拼接完整路径。

2. 使用glob模块查找文件

除了使用os模块递归查找,也可以使用glob模块提供的通配符查找,更加简单快捷。

import glob

file_name = "my_file.txt"  # 要查找的文件名称

file_paths = glob.glob(f"**/{file_name}", recursive=True)  # 执行通配符查找
for file_path in file_paths:  # 输出每个匹配到的文件路径
    print(file_path)

上述代码中,使用glob模块的glob()函数执行通配符查找,第一个参数是通配符,使用**表示递归查找,第二个参数是是否递归查找。使用for循环遍历每一个匹配到的文件路径,进行输出。

这些就是Python根据名称创建存档和查找文件的攻略,我们可以根据自己的需要进行使用。