Python コード

csvファイルを1行づつ読み込み、特定の列に特定の値があった場合その行をスキップする。それ以外ならリストに入れ、新しく作ったcsvファイルに出力するコード。ハイエナコード。

 

 

# -*- coding: utf-8 -*-

#tkinter(ウィンドウ作成用)
import tkinter
import tkinter.filedialog
import tkinter.messagebox
#パス用
import os
#プログラムの終了用
import sys
"""
#実行速度
from time import time
"""
#csv読み込み、書き込み用
import csv


#--------------------------------------------


#ファイルの選択
root = tkinter.Tk()
root.withdraw()
root.attributes('-topmost', True)
root.lift()
root.focus_force()
fTyp = [("","csv")]
iDir = os.path.abspath(os.path.dirname(__file__))
tkinter.messagebox.showinfo('CSV加工','加工するファイルを選択してください。')

#ファイルパス取得
file = tkinter.filedialog.askopenfilename(filetypes = fTyp,initialdir = iDir)

#ファイルを選択していない場合プログラムの終了
if  file ==  "":
    tkinter.messagebox.showinfo('CSV加工','処理は中断されました。')
    sys.exit()

#ファイルパスからフォルダ名取得(出力用に)
outfile = os.path.dirname(file) + "/out.csv"


"""
#実効速度測定開始
start1 = time()
"""

out_list = []
#csv読み込み
with open(file, newline='') as csvfile:
    for row in csv.reader(csvfile):
#3列目が8以外ならリストに入れる
        if  row[2]  != "8":
            out_list.append(row)

#csv書き込み
with open(outfile, 'w') as f:
    writer = csv.writer(f)
    writer.writerows(out_list)


"""
#実行速度測定終了&表示
proc_time = time() - start1
print(proc_time)
"""

#処理完了メッセージ
tkinter.messagebox.showinfo('CSV加工',"加工できました。")