在日常工作中,处理大量文件和文件夹可能会耗费大量时间和精力。本文介绍了如何使用Python脚本来自动化这些任务,包括删除指定文件夹和文件、重命名文件夹以及替换文件内容。
主体内容:
更新240417
import os
import shutil
from zipfile import ZipFile
import re
import tkinter as tk
from tkinter import messagebox
def on_rm_error(func, path, exc_info):
"""
跳过 PermissionError 和 FileNotFoundError 错误,继续删除
"""
import stat
if not os.access(path, os.W_OK):
# 将文件设为可写,以便删除
os.chmod(path, stat.S_IWUSR)
# 重试删除
func(path)
def delete_folders_and_files():
"""
删除指定的文件夹和文件,并创建一个新的文本文件。
"""
# 要删除的文件夹列表
folders = [
"LOST.DIR",
"Music",
"Podcasts",
"Ringtones",
"Alarms",
"Notifications",
"Pictures",
"Movies",
"Download",
"DCIM",
"Documents",
"Audiobooks",
"Android",
"logdata",
"all_images"
]
# 遍历文件夹列表
for folder in folders:
try:
# 尝试删除文件夹及其所有内容
shutil.rmtree(folder, onerror=on_rm_error)
print("删除成功", f"文件夹 {folder} 及其内容已成功删除")
except Exception as e:
print("删除失败", f"删除文件夹 {folder} 及其内容时发生错误: {e}")
# 删除文件
file_to_delete = "Chery__IHU.zip"
try:
os.remove(file_to_delete)
messagebox.showinfo("Deletion Successful", f"The file {file_to_delete} has been successfully deleted.")
except Exception as e:
messagebox.showerror("Deletion Failed", f"An error occurred while deleting the file {file_to_delete}: {e}")
# 创建文本文件
new_text_file = "Chery__IHU.txt"
try:
with open(new_text_file, 'w') as f:
# 向文本文件中写入一些内容(如果需要的话)
pass
messagebox.showinfo("Creation Successful", f"A new text file has been successfully created: {new_text_file}")
except Exception as e:
messagebox.showerror("Creation Failed", f"An error occurred while creating a new text file: {e}")
def rename_folders_and_replace_file_content():
"""
重命名文件夹并替换文件内容。
"""
# 获取当前工作目录
current_directory = os.getcwd()
# 查找并重命名包含"AVNT_Update"的文件夹为"all_images"
for item in os.listdir(current_directory):
if os.path.isdir(os.path.join(current_directory, item)) and "AVNT_Update" in item:
old_path = os.path.join(current_directory, item)
new_path = os.path.join(current_directory, "all_images")
# 如果"all_images"文件夹已存在,则跳过重命名
if os.path.exists(new_path):
messagebox.showerror("Rename Failed", f"Error: {new_path} already exists. Skipping rename.")
break # 假设我们只想重命名第一个匹配的文件夹
else:
os.rename(old_path, new_path)
messagebox.showinfo("Rename Successful", f"{item} has been renamed to all_images")
break # 假设我们只想重命名第一个匹配的文件夹
else:
messagebox.showinfo("Rename Failed", "No folder containing 'AVNT_Update' found in the current directory.")
# 检查"all_images"文件夹下是否存在"rawprogram4.xml"文件并执行替换操作
all_images_path = os.path.join(current_directory, "all_images")
rawprogram4_path = os.path.join(all_images_path, "rawprogram4.xml")
if os.path.isfile(rawprogram4_path):
with open(rawprogram4_path, 'r') as file:
content = file.read()
# 使用正则表达式替换内容
new_content = re.sub(r'mifs_hyp_la.non_secure.img', 'mifs_hyp_la.img', content)
with open(rawprogram4_path, 'w') as file:
file.write(new_content)
messagebox.showinfo("Replacement Successful", "Replaced 'mifs_hyp_la.non_secure.img' with 'mifs_hyp_la.img' in rawprogram4.xml")
else:
messagebox.showinfo("Replacement Failed", "rawprogram4.xml file not found in the 'all_images' folder.")
# 执行删除和重命名操作
try:
delete_folders_and_files()
rename_folders_and_replace_file_content()
except Exception as e:
messagebox.showerror("Error Occurred", f"An error occurred: {e}")
引言
简要介绍了为什么需要自动化文件操作,以及使用Python脚本的好处。
删除文件夹和文件
说明了如何使用Python的os和shutil模块来删除指定的文件夹和文件,以及处理可能出现的权限和文件不存在的错误。
重命名文件夹
讲解了如何查找特定名称的文件夹并将其重命名为另一个名称,同时考虑了文件夹是否已经存在的情况。
替换文件内容
介绍了如何查找特定文件并替换其中的内容,以满足特定的需求。使用了Python的re模块来实现正则表达式替换。
综合应用
结合前面的步骤,展示了如何将删除、重命名和内容替换操作结合起来,构建一个完整的文件操作脚本。
用法和注意事项
提供了使用该脚本的简单说明,并列出了注意事项,以确保用户在运行脚本时能够正确操作并避免意外情况。
结论:
通过本文的介绍,读者可以学习到如何使用Python脚本来自动化文件操作,节省时间和精力,提高工作效率。同时,本文还强调了在使用脚本时需要注意的事项,以确保操作的安全和准确性。
结束语:
Python的强大功能和丰富的标准库使得文件操作自动化变得轻而易举。希望本文能够帮助读者更好地利用Python来处理文件和文件夹,提升工作效率,实现自动化。