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