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

  • Post category:Python

Python 是一种高级编程语言,非常适合在文件操作的场景中处理数据。在实际工作中,我们经常需要根据文件名称来创建、存档,以及查找文件。下面是 Python 根据名称创建存档和查找文件的完整攻略。

创建存档

在 Python 中创建存档,需要用到 osshutil 这两个标准库。其中,os 库提供了与操作系统进行交互和访问文件系统的函数,shutil 库提供了更高层次的文件操作函数,例如将文件复制、重命名、删除等操作。

下面是一个示例代码,可以根据文件名称创建存档并将所有符合条件的文件复制到该存档中。

import os
import shutil

def archive_files_by_name(name, archive_name):
    archive_path = os.path.join(os.getcwd(), archive_name)  # 存档的路径
    if not os.path.exists(archive_path):
        os.mkdir(archive_path)
    for root, dirs, files in os.walk(os.getcwd()):  # 遍历当前目录以及子目录中的所有文件
        for file in files:
            if name in file:
                file_path = os.path.join(root, file)
                shutil.copy2(file_path, archive_path)  # 复制符合条件的文件到存档中
    print('Archive created successfully!')

archive_files_by_name('demo', 'archive')  # 创建一个名称为 demo 的存档,并将所有包含 demo 的文件复制到该存档中

在上面的代码中,我们使用了 os.getcwd() 函数来获取当前工作目录的路径,并使用 os.path.join() 函数将存档路径和文件路径进行连接。然后使用 os.mkdir() 函数在存档路径下创建存档目录。接着,我们使用 os.walk() 函数遍历当前目录以及子目录中的所有文件,并通过判断文件名是否包含指定的名称来筛选需要复制的文件。最后,使用 shutil.copy2() 函数将符合条件的文件复制到存档目录中。

查找文件

如果我们需要根据名称来查找文件,可以使用 glob 库来实现。该库提供了一种简单而强大的方式来匹配文件名,可以匹配具有规律的文件名,例如所有以 .txt 结尾的文件。

下面是一个示例代码,可以根据名称查找当前目录及其子目录中符合条件的文件并打印出来。

import glob

def find_files_by_name(name):
    files = glob.glob(f'**/*{name}*', recursive=True)  # 查找当前目录及其子目录中所有包含指定名称的文件
    if len(files) == 0:
        print(f'No file matching "{name}" found.')
    else:
        print(f'Files matching "{name}" are:')
        for file in files:
            print(f'- {file}')

find_files_by_name('demo') # 查找所有包含 demo 的文件

在上面的代码中,我们使用 glob.glob() 函数,通过传入匹配模式来查找符合条件的文件。其中,**/ 表示递归匹配所有子目录,* 表示匹配任意字符,name 表示文件名的一部分,这样就可以匹配包含指定名称的文件。最后,使用循环遍历所有符合条件的文件,并打印出来。

以上就是 Python 根据名称创建存档和查找文件的完整攻略。需要注意的是,在使用这些文件操作函数时,一定要考虑到文件路径的处理和异常情况的处理。