如何更改 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)
我正在使用 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)