python練習プログラム
作業ディレクトリからcsvファイルを選んで処理を行うプログラムを書いてみた。
処理を行っている最中に同じプログラムを動かしたときに、同一のファイルが再び処理されて
しまうのを防ぐためにファイルを開いたときと処理が完了したときにファイル名が変更される
ようにした。
とりあえず以下のように書いてみた。仮に、行う処理をファイルの行ごとに数値の合計を出して表示するものとしてみた。
import time import os import csv BASEDIR = os.path.dirname(os.path.abspath(__file__)) for root, dirs, files in os.walk(BASEDIR): for file in files: if file.lower().endswith(".csv"): #作業ディレクトリ中のcsvファイルを取得 csv_file = os.path.join(root, file) f = open(csv_file) lis = [] for row in csv.reader(f): #csvモジュールで読み込んでリストに入れる lis.append(row) f.close() os.rename(file, file.split(".")[0] + ".read") #読み込みが完了したらファイル名を変更 time.sleep(5) #プログラムを一時静止 for i in range(2, len(lis)): int_list = [int(s) for s in lis[i][1:]] print lis[i][0], sum(int_list) #行ごとの数値の合計を表示 for root2, dirs2, files2 in os.walk(BASEDIR): for file2 in files2: if file2.lower().endswith(".read"): os.rename(file2, file2.split(".")[0] + ".done") #処理が完了したらファイル名を変更
sleep関数を使って途中でプログラムを止めて、ファイル名が2回変更されているか確かめた。