如何更改 python 中不同子目录中的多个文件名?

How can I change multiple filenames in different subdirectories in python?

我正在使用 Python3 并尝试更改多个子目录中的文件名称以匹配文件夹名称。我的目录如下所示:

路径:C:\Users\Me\Project 在路径中,我有以下文件夹:alldata、folderA、folderB、folderC

FolderA、folderB 和 folderC,每个包含一个名为 data.csv

的文件

我想在文件夹内的文件(例如dataA.csv)中添加文件夹的字母名称(例如A、B、C),然后将这些重命名的文件全部移动到"alldata"

非常感谢您的帮助!

python 中的 'os' 模块使您可以访问处理文件夹和文件的函数。例如,os模块中有移动、复制、重命名、删除文件夹和文件的功能。例如试试这个:

import os
basePath = "C:\Users\Me\Project\"

# Rename and move the data.csv file in folderA to dataA.csv in the alldata folder
os.rename(basePath + "folderA\data.csv", basePath + "alldata\dataA.csv")
# Rename and move the data.csv file in folderB to dataB.csv in the alldata folder
os.rename(basePath + "folderB\data.csv", basePath + "alldata\dataB.csv")
# Rename and move the data.csv file in folderC to dataC.csv in the alldata folder
os.rename(basePath + "folderC\data.csv", basePath + "alldata\dataC.csv")

# Make sure that they moved as intended
filesInAllDataFolder = os.listdir(basePath + "alldata\")    
print(filesInAllDataFolder)

os 模块超级方便,我保证你会经常使用它,所以玩吧!

这对我有用:

import os

def scan_dir(folder):
    for name in os.listdir(folder):
        path = os.path.join(folder, name)

        if os.path.isfile(path):
            if 'data' in path:
                dir_name = path.split('/')[-2]
                new_name_path = path[:-3]+dir_name+'.csv'      
                new_name_path = new_name_path.split('/')
                new_name_path[-2] = 'alldata'
                new_name_path = "/".join(new_name_path)
                os.rename(path, new_name_path)
       else:
            scan_dir(path)


directory = 'C:\Users\Me\Project'
scan_dir(directory)

这个可能有点硬编码,但对于刚开始使用 Python 的人来说可能更容易理解:

import os
import shutil

# Enter the 'Project' folder
os.chdir('C:\Users\Me\Project')
# Filter for folders that contain the word 'folder'
folders = [folder for folder in os.listdir() if 'folder' in folder]

for folder in folders:
    # Get the last letter of every folder
    suffix = folder[-1]
    # Build source and destination path for the csv files
    source = folder + '\data.csv'
    dest = 'alldata\data' + suffix + '.csv'

    shutil.move(source, dest)