用python批量获取某路径文件夹及子文件夹下的指定类型文件,并按原文件夹结构批量存储处理后的文件

因为是把自己成功运行的整个代码按几部分截取出来的,所以每一小节代码不一定能单独运行,特此说明。

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+''+'/'是新路径,这样就可以保存原目录结

猜你喜欢

转载自blog.csdn.net/Barry_J/article/details/83274791
今日推荐