Python基础入门 Day88 文件的批量操作与自动化

61次阅读
没有评论

共计 2891 个字符,预计需要花费 8 分钟才能阅读完成。

在日常工作中,我们经常需要对大量文件进行批量处理,例如重命名、复制、移动、删除等操作。Python 提供了强大的 osshutil 模块,能够方便地实现文件的批量操作。本节将重点介绍如何使用 Python 实现文件的批量操作与自动化处理。

  1. 批量重命名文件
    在某些场景中,我们可能需要对多个文件进行批量重命名。例如,我们需要将文件夹中的所有 .txt 文件改为 file1.txtfile2.txtfile3.txt 等格式。
import os

def batch_rename_files(folder_path, prefix):
    files = os.listdir(folder_path)
    index = 1
    for filename in files:
        if filename.endswith(".txt"):
            new_name = f"{prefix}{index}.txt"
            old_path = os.path.join(folder_path, filename)
            new_path = os.path.join(folder_path, new_name)
            os.rename(old_path, new_path)
            print(f" 重命名:{filename} -> {new_name}")
            index += 1

# 批量重命名文件夹中的 .txt 文件
batch_rename_files("./my_folder", "file")

此代码遍历指定目录,重命名所有 .txt 文件,按顺序编号。

  1. 批量移动文件
    在文件管理过程中,批量移动文件也非常常见。我们可以将指定类型的文件移动到目标文件夹中:
import os
import shutil

def move_files_to_folder(folder_path, target_folder, file_extension=".txt"):
    if not os.path.exists(target_folder):
        os.makedirs(target_folder)
    
    files = os.listdir(folder_path)
    for filename in files:
        if filename.endswith(file_extension):
            old_path = os.path.join(folder_path, filename)
            new_path = os.path.join(target_folder, filename)
            shutil.move(old_path, new_path)
            print(f" 文件移动:{filename} -> {target_folder}")

# 批量移动 .txt 文件到 target_folder
move_files_to_folder("./my_folder", "./target_folder", ".txt")

此方法将所有指定类型的文件移动到目标目录中。

  1. 批量复制文件
    我们也可以使用 shutil.copy() 来批量复制文件:
import os
import shutil

def copy_files_to_folder(folder_path, target_folder, file_extension=".txt"):
    if not os.path.exists(target_folder):
        os.makedirs(target_folder)
    
    files = os.listdir(folder_path)
    for filename in files:
        if filename.endswith(file_extension):
            old_path = os.path.join(folder_path, filename)
            new_path = os.path.join(target_folder, filename)
            shutil.copy(old_path, new_path)
            print(f" 文件复制:{filename} -> {target_folder}")

# 批量复制 .txt 文件到 target_folder
copy_files_to_folder("./my_folder", "./target_folder", ".txt")

这种方法能够在不删除源文件的情况下,将文件复制到目标文件夹。

  1. 批量删除文件
    有时我们需要删除某一类型的文件,或者删除指定目录下的所有文件。可以使用 os.remove() 删除文件:
import os

def delete_files_in_folder(folder_path, file_extension=".txt"):
    files = os.listdir(folder_path)
    for filename in files:
        if filename.endswith(file_extension):
            file_path = os.path.join(folder_path, filename)
            os.remove(file_path)
            print(f" 文件删除:{filename}")

# 批量删除 .txt 文件
delete_files_in_folder("./my_folder", ".txt")

此方法会删除指定目录中所有的 .txt 文件。

  1. 批量操作多个文件夹
    如果需要对多个文件夹中的文件进行操作,可以使用 os.walk() 遍历每个子目录:
import os
import shutil

def batch_move_across_multiple_folders(src_folder, target_folder, file_extension=".txt"):
    if not os.path.exists(target_folder):
        os.makedirs(target_folder)
    
    for root, dirs, files in os.walk(src_folder):
        for filename in files:
            if filename.endswith(file_extension):
                old_path = os.path.join(root, filename)
                new_path = os.path.join(target_folder, filename)
                shutil.move(old_path, new_path)
                print(f" 文件移动:{filename} -> {target_folder}")

# 批量移动多个文件夹中的 .txt 文件
batch_move_across_multiple_folders("./src_folder", "./target_folder", ".txt")

此方法将递归遍历源文件夹及其所有子文件夹,批量移动符合条件的文件。

总结:
通过 osshutil 模块,Python 可以轻松实现文件的批量操作,如批量重命名、复制、移动和删除等。结合这些功能,我们可以在文件管理、数据处理和自动化脚本中显著提高效率。

练习与思考:

  1. 修改 batch_rename_files() 函数,使其支持批量重命名不同扩展名的文件。
  2. 编写一个程序,将指定目录下的所有图像文件(如 .jpg, .png)批量转换为 .jpeg 格式。
  3. 使用 os.walk() 递归遍历多个目录,删除所有 .log 文件。
正文完
 0
评论(没有评论)