# '20/02/29更新:コードを見易く刷新しました。
本プログラムは、カレントディレクトリ以下のサブディレクトリ内を含む全てのファイルを再帰的に検索する。もしcsvファイルがあればその中身をすべてリストへ格納して、All_data.csvというひとつのファイルに追記してゆく仕様です。
▼本プログラム
import os, sys
import csv
import re
def findCsv():
csvlist = []
dirlist = []
pathlist = []
for dirpath, dirnames, filenames in os.walk(os.getcwd()):
'''
print (dirpath)
print (dirnames)
print (filenames)
'''
for i, filename in enumerate(filenames):
m = re.search(".csv", filename)
if m:
csvlist.append(filename)
dirlist.append(dirpath)
mypath = [dirpath, filename]
pathlist.append(os.path.join(*mypath))
return pathlist
def readFile(csvPath):
datalist = []
with open(csvPath, 'r') as f1:
reader = csv.reader(f1)
for row in reader:
datalist.append(row)
return datalist
def writeFile(datalist):
with open('All_data.csv', 'a') as f2:
writer = csv.writer(f2, delimiter=',', lineterminator="\n")
for row in datalist:
writer.writerow(row)
def main():
pathlist = findCsv()
for i, csvpath in enumerate(pathlist):
print(i,'/',len(pathlist))
datalist = readFile(csvpath)
writeFile(datalist)
if __name__ == '__main__':
main()
正規表現を用いてファイルを抽出する方法は下記リンク参照
hk29.hatenablog.jp
以上