python操作文件代码
  kfa6JpRNPgAu 2023年11月05日 25 0

在某个文件夹及其子文件夹下创建指定名称的文件夹

import os

def create_folder(root_folder, target_folder_name):
    try:
        folder_path = os.path.join(root_folder, target_folder_name)
        os.makedirs(folder_path, exist_ok=True)
        print("文件夹创建成功:", folder_path)
    except Exception as e:
        print("创建文件夹时出现错误:", str(e))

def create_folder_recursively(root_folder, target_folder_name):
    for dirpath, dirnames, filenames in os.walk(root_folder):
        create_folder(dirpath, target_folder_name)

# 指定要创建的目标文件夹名称和根目录路径
target_folder_name = "your_target_folder_name"
root_folder = r"C:\path\to\your\root_folder"

create_folder_recursively(root_folder, target_folder_name)

删除文件夹中指定后缀的文件,但保留该文件夹下某个子文件夹中的文件

import os

def delete_files_with_suffix(root_folder, suffix, exclude_subfolder):
    upper_suffix = suffix.upper()
    lower_suffix = suffix.lower()
    for dirpath, dirnames, filenames in os.walk(root_folder):
        if dirpath.endswith(exclude_subfolder):
            # 如果当前文件夹为排除的子文件夹,则跳过
            continue
        for filename in filenames:
            if filename.endswith(upper_suffix) or filename.endswith(lower_suffix):
                file_path = os.path.join(dirpath, filename)
                os.remove(file_path)
                print("已删除文件:", file_path)

# 指定要删除的文件后缀名、文件夹路径和需要保留的子文件夹名称
file_suffix = ".JPG"
folder_path = r"C:\path\to\your\root_folder"
exclude_subfolder = "folder_name"

delete_files_with_suffix(folder_path, file_suffix, exclude_subfolder)

删除某个文件夹及其子文件夹下的指定文件夹

import os
import shutil

def delete_folder(folder_path):
    try:
        shutil.rmtree(folder_path)
        print("文件夹删除成功:", folder_path)
    except FileNotFoundError:
        print("文件夹不存在:", folder_path)
    except Exception as e:
        print("删除文件夹出错:", str(e))

def find_and_delete_folder(root_folder, target_folder_name):
    for dirpath, dirnames, filenames in os.walk(root_folder):
        for dirname in dirnames:
            if dirname == target_folder_name:
                target_folder_path = os.path.join(dirpath, dirname)
                delete_folder(target_folder_path)

# 指定要删除的目标文件夹名称和根目录路径
target_folder_name = "your_target_folder_name"
root_folder = r"C:\path\to\your\root_folder"

find_and_delete_folder(root_folder, target_folder_name)

将文件夹中的文件(只有一个时)重命名为文件夹的名字

import os

def rename_files_to_folder_name(root_folder):
    for dirpath, dirnames, filenames in os.walk(root_folder):
        for filename in filenames:
            folder_name = os.path.basename(dirpath)
            file_path = os.path.join(dirpath, filename)
            new_file_path = os.path.join(dirpath, folder_name + os.path.splitext(filename)[-1])
            
            os.rename(file_path, new_file_path)
            print(f"已重命名文件:{file_path} -> {new_file_path}")

# 指定要重命名的根文件夹路径
root_folder_path = r"C:\path\to\your\root_folder"

rename_files_to_folder_name(root_folder_path)

文件夹中只保留最大的那个文件,其余文件全部删除(子文件夹也执行相同操作)

import os

def keep_largest_file(folder_path):
    # 获取所有文件的路径和大小
    file_info = []
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        if os.path.isfile(file_path):  # 只处理文件,忽略子文件夹
            file_size = os.path.getsize(file_path)
            file_info.append((file_path, file_size))

    # 根据文件大小排序,如果要保留最小的文件则设置reverse=True
    file_info.sort(key=lambda x: x[1], reverse=False)

    # 保留列表排序中最后的一个文件,删除其他文件
    for i in range(0, len(file_info) - 1):
        file_path = file_info[i][0]
        os.remove(file_path)
        print(f"已删除文件:{file_path}")

    # 检查文件夹是否为空
    if not os.listdir(folder_path):
        return

    # 对子文件夹执行相同操作
    for filename in os.listdir(folder_path):
        sub_path = os.path.join(folder_path, filename)
        if os.path.isdir(sub_path):  # 处理子文件夹
            keep_largest_file(sub_path)

folder_path = r'C:\path\to\your\root_folder'
keep_largest_file(folder_path)

将某个文件夹中的文件名重命名,只保留其中的数字(子文件夹也执行相同操作)

import os
import re

def rename_files(folder_path):
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        if os.path.isfile(file_path):
            basename, ext = os.path.splitext(filename)  # 分离文件名和扩展名
            new_basename = re.sub(r'\D', '', basename)  # 仅保留数字
            new_filename = new_basename + ext
            new_file_path = os.path.join(folder_path, new_filename)
            os.rename(file_path, new_file_path)
            print(f"已将文件 {filename} 重命名为 {new_filename}")
        elif os.path.isdir(file_path):
            rename_files(file_path)  # 对子文件夹执行相同操作

# 指定文件夹路径
folder_path = r'C:\path\to\your\root_folder'

# 执行重命名操作
rename_files(folder_path)
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
kfa6JpRNPgAu