例えば、logdata_20150725.csvのようなファイル。
CSVファイル内に日付データカラムが含まれていればなにも問題はないですが、ファイル名だけが日付を持っていると取扱いが面倒くさいです。Pythonを使ってこの課題をなんとかします。
Pythonが使える環境であること。取り出したい要素はアンダースコア(_)で切り分けられていることを前提としています。
11行目の 'split' で分割していますので、ここを操作すると他の分割文字でも対処可能です。
import csv
import os
FileList = os.listdir()
for FileName in FileList:
ReadFile = open(FileName, 'r')
WriteFile = open(FileName.split('_')[1]+'.csv', 'w')
reader = csv.reader(ReadFile)
header = next(reader)
writer = csv.writer(WriteFile, lineterminator='\n')
for row in reader:
addrow = [FileName.split('_')[1]]
addrow.extend(row)
writer.writerow(addrow)
ReadFile.close()
WriteFile.close()
使い捨てスクリプトなので、ファイルがおいてあるフォルダ内で実行してください。1つずつファイルを読み込んで、別名(この場合は日付.csvのかたち)で保存します。
- osモジュールを利用してFileListにファイル一覧を格納する
- ReadFileに読み込みたいファイルを格納する
- WriteFileに書き出したいファイル名を与える
- for文のFileName要素を分割して、第2要素をファイル名に(FileName.split('_')[1]の部分)
- csvモジュールを使ってreader,header,writerを作成
- 行に日付要素を格納
- 元々CSVファイルに格納されていた要素を行の右側に追加(extend)
- writerを使ってCSVファイルに書き込み
- 閉じる
という流れです。