因为是把自己成功运行的整个代码按几部分截取出来的,所以每一小节代码不一定能单独运行,特此说明。
1.获取某路径文件夹及子文件夹下的指定pcm类型文件的全部路径
import os
def eachfile(filepath):
pathdir=os.listdir(filepath)
for s in pathdir:
newdir = os.path.join(filepath,s) # 将文件名加入到当前文件路径后面
if os.path.isfile(newdir): #如果是文件
if os.path.splitext(newdir)[1]==".pcm": # 如果文件是".pcm"后缀的
soundfile.append(newdir)
elif os.path.isdir(newdir):#如果是路径
eachfile(newdir)#递归
return soundfile
fp=r'想要处理的文件的路径'
os.chdir(fp)
f=eachfile(fp)
2.按原文件夹结构在其他地方创建存储处理后的数据所用文件夹
import os
fp=r'想要处理的文件的路径'
os.chdir(fp)
soundfile=[]
f=eachfile(fp)
for i in range(len(f)):
pcm_file=f[i]
path=os.path.split(f[i])[0]
mkpath="处理后的文件存储起来的路径"+path #这里的文件夹保存方法可能比较笨拙但是的确有效
isExists=os.path.exists(mkpath)
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
os.makedirs(mkpath)
filename =os.path.split(f[i])[1] #获取文件名
index = filename.rfind('.pcm')
name = filename[:index]#获取不含后缀的文件名
main(pcm_file,path,name)#此处是主函数的调用
3.将处理后输出的CSV文件存储在设定的路径下,原文件夹结构不变
import numpy
import pandas
import csv
def main(pcm_file,path,name):#主函数
#主函数具体的参数处理过程添加的这里
dataframe = pandas.DataFrame(XXXXXX) #XXXXXX是要输出的数组函数,这里用pandas处理数据
dataframe.to_csv('处理后的文件存储起来的路径'+''+path+''+'/'+name+'.csv',index=False,sep=',')
#将DataFrame存储为csv格式,index表示是否显示行名,default=True
#每个文件的名称也不变为name,在第2小节的for循环中,name是所得到的不含后缀的文件名
#path是原路径,'想要把处理后的文件存储起来的路径'+''+path+''+'/'是新路径,这样就可以保存原目录结