我正在使用Python3,并尝试更改多个子目录中的文件名以匹配文件夹名称。我的目录如下:
路径:C:\ Users \ Me \ Project 在路径中,我具有以下文件夹:alldata,folderA,folderB,folderC
文件夹A,文件夹B和文件夹C各自包含一个名为data.csv的文件
我想将文件夹的字母名称(例如A,B,C)添加到该文件夹内的文件(例如dataA.csv)中,然后将所有这些重命名的文件移至“ alldata”
我非常感谢您的帮助!
答案 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)