1. 程式人生 > >用python批量獲取某路徑資料夾及子資料夾下的指定型別檔案,並按原資料夾結構批量儲存處理後的檔案

用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+''+'/'是新路徑,這樣就可以儲存原目錄結