import os
defprocess(path):
files = os.listdir(path)
file_names =set([file.split('.')[0]forfilein files])# 去重
file_names =list(file_names)# 替换字符print(file_names)for filename in file_names:
file_data =''
dir_path = os.path.join(path, filename +".txt")# TXT文件withopen(dir_path,'r', encoding='utf-8')as f:for i in f:# i为逐字输出(包含各种标点)# i = i.replace(":', '", ":") # 冒号不换行# i = i.replace("'", "") # 将字符串中的英文单引号替换为空
i = i.replace('cloudnorm_','')# 将字符串中的英文逗号替换为换行符
file_data += i
withopen(dir_path,'w', encoding='utf-8')as f:# 保存文件(清空原文件,并将file_data写入)
f.write(file_data)if __name__ =='__main__':
path ='E:/DataSet/text/data/custom/ImageSets/'
process(path)
2. 获取文件夹下文件名
可用这个脚本来生成ImageSets中的.txt文件
import os
names = os.listdir('E:/desktop/PointCloud/OpenPCDet/data/custom/testing/velodyne/')#路径
i=0#用于统计文件数量是否正确,不会写到文件里
train_val =open('E:/desktop/PointCloud/OpenPCDet/data/custom/testing/velodyne/test.txt','w')for name in names:
index = name.rfind('.')
name = name[:index]
train_val.write(name+'\n')
i=i+1print(i)# def filename_find(filepath, return_type=0):# basename = os.path.basename(filepath)# extension = f'.{basename.split(".")[-1]}'# if not basename.__contains__('.'):# extension = ''# filename_without_extension = basename[0:len(basename)-len(extension)]# if return_type is 0: # 文件名# return basename# if return_type is 1: # 后缀名# return extension# if return_type is 2: # 无后缀文件名# return filename_without_extension
3. 更改文件夹下所有指定文件名
import re
import os
path ="E:/desktop/PointCloud/OpenPCDet/data/custom/training/label_2"#输入你要更改文件的目录
originalname =' - 副本'#123是要查找文件名里包含123的文件
replacename ='0'#321是要被替换的字符串,如果就是删除originalname,那么replacename = ''就可以defmain1(path1):
files = os.listdir(path1)# 得到文件夹下的所有文件名称forfilein files:#遍历文件夹if os.path.isdir(path1 +'\\'+file):
main1(path1 +'\\'+file)else:
files2 = os.listdir(path1 +'\\')for file1 in files2:if originalname in file1:#用‘’替换掉 X变量
n =str(path1 +'\\'+ file1.replace(originalname,replacename))
n1 =str(path1 +'\\'+str(file1))try:
os.rename(n1, n)except IOError:continue
main1(path)