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

时间:2018-10-01 16:00:55

标签: python subdirectory

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

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

文件夹A,文件夹B和文件夹C各自包含一个名为data.csv的文件

我想将文件夹的字母名称(例如A,B,C)添加到该文件夹​​内的文件(例如dataA.csv)中,然后将所有这些重命名的文件移至“ alldata”

我非常感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

此代码可能有点硬编码,但对于刚开始使用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)

答案 1 :(得分:0)

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模块非常方便,我保证您会经常使用它,所以请尝试使用它!

答案 2 :(得分:0)

这对我有用:

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)