斯丢彼得 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 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私