from os import walk path='data' for curDir, dirs, files in walk(path): #for curDir, dirs, files in walk(path,topdown=False): print('現(xiàn)在的目錄:' ,curDir) print('該目錄下包含的子目錄:' , str(dirs)) print('該目錄下包含的文件:',str(files)) print('*'*20)
#endswith 截取文件后綴 import os path='data' for curDir, dirs, files in os.walk(path): [print(os.path.join(curDir, file)) for file in files if file.endswith('.xlsx')]
「2.3掃描輸出所有的子目錄(子文件夾)」
# 使用os.walk輸出某個(gè)目錄下的所有文件 import os path='data' for curDir, dirs, files in os.walk(path): for _dir indirs: print(os.path.join(curDir, _dir))
data\testA data\testB data\testC
「案例代碼」
#綜合運(yùn)用os.walk()——文件指定日期整理程序
import pandas as pd import numpy as np import os,openpyxl #移動(dòng)符合條件文件,并刪除二級(jí)文件夾和多余文件 defmove_file(file_path,_new_path,date_xl_str):
#本月文件移動(dòng)至對(duì)應(yīng)新建文件夾,,非本月文件直接刪除 for curDir, dirs, files in os.walk(file_path): for file in files: old_path = os.path.join(curDir, file) new_path = os.path.join(_new_path, file) file_date=file.split('_')[-1][:10] try: os.rename(old_path,new_path) if file_date in date_xl_str else os.remove(old_path) except: os.remove(old_path)
#移除子文件夾 for curDir, dirs, files in os.walk(file_path): for _dir in dirs: os.removedirs(os.path.join(curDir, _dir)) os.mkdir('data')
#文件去重-相同日期文件 defqch_date(file_path): wj_names=os.listdir(file_path) wj_list=[] num=0 for wj in wj_names: new_wj=wj[:-11] if new_wj notin wj_list: wj_list.append(new_wj) else: os.remove(file_path+'\\'+wj) num+=1 return num
#清空當(dāng)前活動(dòng)表數(shù)據(jù) for row in ws.iter_rows(): for cell in row: cell.value=None
#dataframe行列數(shù) idx_num,col_num=data.shape
#新數(shù)據(jù)寫入當(dāng)前活動(dòng)表-注意索引偏移 for i in range(1,idx_num+1): for j in range(1,col_num+1): ws.cell(row=i,column=j).value=data.iloc[i-1,j-1]
#保存關(guān)閉writer writer.save() writer.close()
returnNone
#文件檢查 defcheck_file(file_path,check_file='文件檢查.xlsx'): wj_names=os.listdir(file_path) data=pd.DataFrame([wj.split('_')[2:] for wj in wj_names],columns=['店鋪名稱','日期']) data['日期']=data['日期'].str[:10]