斯丢彼得 2023-04-08 23:27 采纳率: 100%
浏览 56
已结题

Python 批处理文件

img

有一批文件,第一级文件夹名是Serial number, 第二级是测试时间,第三级中有两个csv 文件,这个文件的前面与Serial number 文件夹名一致,后面是固定的_blemish_results_RGB_merged_offlineprocess.csv 和_blemish_results_W_merged_offlineprocess.csv。 如何更改以下代码实现固定字符串的搜索并重命名该文件,重命名方式我已写好,但是不知道怎么写模糊查找,谢谢各位,有效立即采纳

要实现的目标是将图片中红色的csv 文件,重命名成 “一级文件夹名”+“二级文件夹名前17位”+“固定_blemish_results_RGB_merged_offlineprocess.csv”,然后统一放在target folder 下面,请各位赐教


#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sun Dec 18 11:16:42 2022

@author: andychen
"""

import os
import shutil

# 设置要遍历的根文件夹路径
root_path = '/Users/andychen/Desktop/untitled folder/'

# 设置要将重命名后的文件放到的路径
target_path = '/Users/andychen/Desktop/untitled folder/'

# 创建 target_path 文件夹,如果文件夹已存在则不会创建
os.makedirs(target_path, exist_ok=True)

# 遍历所有文件夹和子文件夹
for root, dirs, files in os.walk(root_path):
    # 遍历所有文件
    for file in files:
        # 如果文件名是 ******blemish_results_RGB_merged_offlineprocess.csv
        if file == 'blemish_results_RGB_merged_offlineprocess.csv':
            # 获取文件所在的一级文件夹名和二级文件夹名的前 17 个字符
            folder1 = root.split('/')[-2]
            folder2 = root.split('/')[-1][:17]
            # 重命名文件
            new_file_name = folder1 + '_' + folder2 + '_blemish_results_RGB_merged_offlineprocess.csv'
            # 获取文件的完整路径
            file_path = os.path.join(root, file)
            # 获取重命名后文件的完整路径
            new_file_path = os.path.join(target_path, new_file_name)
            # 重命名文件并移动到指定路径
            shutil.copy(file_path, new_file_path)

print("finish")

  • 写回答

5条回答 默认 最新

  • 语言-逆行者 2023-04-09 08:57
    关注

    可以使用Python中的字符串操作函数来实现模糊查找,比如使用字符串的startswith()函数判断是否以指定字符串开头,或者使用字符串的find()函数查找指定字符串是否在字符串中出现。

    修改代码如下:

    import os
    import shutil
    
    # 设置要遍历的根文件夹路径
    root_path = '/Users/andychen/Desktop/untitled folder/'
    
    # 设置要将重命名后的文件放到的路径
    target_path = '/Users/andychen/Desktop/untitled folder/'
    
    # 创建 target_path 文件夹,如果文件夹已存在则不会创建
    os.makedirs(target_path, exist_ok=True)
    
    # 遍历所有文件夹和子文件夹
    for root, dirs, files in os.walk(root_path):
        # 遍历所有文件
        for file in files:
            # 如果文件名是以_blemish_results_RGB_merged_offlineprocess.csv结尾
            if file.endswith('_blemish_results_RGB_merged_offlineprocess.csv'):
                # 获取文件所在的一级文件夹名和二级文件夹名的前 17 个字符
                folder1 = root.split('/')[-2]
                folder2 = root.split('/')[-1][:17]
                # 重命名文件
                new_file_name = folder1 + '_' + folder2 + '_blemish_results_RGB_merged_offlineprocess.csv'
                # 获取文件的完整路径
                file_path = os.path.join(root, file)
                # 获取重命名后文件的完整路径
                new_file_path = os.path.join(target_path, new_file_name)
                # 重命名文件并移动到指定路径
                shutil.copy(file_path, new_file_path)
    
    print("finish")
    
    
    

    这样修改后,代码可以检查文件名是否以"_blemish_results_RGB_merged_offlineprocess.csv"结尾,如果是,则进行重命名操作。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月17日
  • 已采纳回答 4月9日
  • 修改了问题 4月9日
  • 修改了问题 4月8日
  • 展开全部

悬赏问题

  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败
  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿