昨天我們用python將所有csv文件寫入數(shù)據(jù)庫告匠,進(jìn)行數(shù)據(jù)保存供后續(xù)提取分析用童擎,程序中有段代碼是獲取當(dāng)前文件夾下的所有文件围来,這里單獨(dú)提出來說明下哈:
-
for folderName, subfolders, filenames in os.walk(path)
主要用到的是os.walk這個(gè)函數(shù)嚼吞,這個(gè)函數(shù)返回的是當(dāng)前文件夾名稱舅逸,子文件夾名以及當(dāng)前文件夾下的所有文件名這三個(gè)值,然后每個(gè)值都是一個(gè)列表的形式寸潦,所以我們用for循環(huán)一下當(dāng)前文件夾下所有文件色鸳;
-
if '.csv' in file_name and file_name not in rf_content
這一句主要作用是提取出.csv為后綴的文件,然后這個(gè)文件還不能在rf_content中存在甸祭;
那這個(gè)rf_content是什么呢缕碎?答案就是前面已經(jīng)寫入數(shù)據(jù)庫的所有文件名稱褥影,這個(gè)rf_content是調(diào)用read_txt(filename_txt)獲取的池户;
所以還有個(gè)函數(shù)write_txt(filename, filename_list),就是將本次寫入數(shù)據(jù)庫的文件名添加到txt文件中凡怎,避免下次重復(fù)寫入校焦。
# 讀txt文件,這個(gè)txt里面存的上次寫入數(shù)據(jù)庫的所有文件名
def read_txt(filename):
if os.path.exists(filename):
rf = open(filename, 'r')
rf_content = rf.read()
rf.close()
return rf_content
else:
return []
# 程序運(yùn)行的最后把本次寫入數(shù)據(jù)庫的所有csv文件名 寫入txt文件统倒,防止下次重復(fù)寫入
def write_txt(filename, filename_list):
wf = open(filename, 'a')
for i in filename_list:
wf.write(i + '\n')
wf.close()
# 該函數(shù)的作用是獲取所有csv文件名寨典,用filename_list存儲(chǔ)并返回
def get_all_csv_name(path, filename_txt):
rf_content = read_txt(filename_txt)
filename_list = []
for folderName, subfolders, filenames in os.walk(path):
for file_name in filenames:
if '.csv' in file_name and file_name not in rf_content:
filename_list.append(file_name)
return filename_list