LoginSignup
2
4

More than 5 years have passed since last update.

ファイルの名前に解析したい要素が含まれているCSVを取り扱う

Last updated at Posted at 2016-07-25

例えば、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ファイルに書き込み
  • 閉じる

という流れです。

参考
http://qiita.com/okadate/items/c36f4eb9506b358fb608

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4