【Python】【サンプルコード】実際の用途別チートシート を作ってみたよ【複数ファイル、ディレクトリ削除、作成、書き込み、読み込み編】
実際の用途別チートシート を作ってみたよ【複数ファイル削除、作成、書き込み、読み込み(File I/O)編】
概要
たまに使うと忘れがちなファイル書き込み、読み込み
大体そういう時は複数の(大量の)ファイルやディレクトリを作成したり、削除したり、読み込んだりと、
調べるにしてもいくつかに分けて検索する必要があり、意外と大変。
その後にはmatplotlibやpandasも毎回調べるし。
そんなときにとりあえずコピペしておけば動くそんなコードをまとめたシートになります。
なお、ここでは一機能の説明ではなく、実際の用途ごとにまとめてあります。
各関数ごとの細かい機能は下の関数ごとのリンク先か別途Google先生で確認してください。
随時更新中
このチートシートで使われているライブラリ一覧
ファイル、ディレクトリ探索
ファイル、ディレクトリ存在確認
ディレクトリ作成
ディレクトリ削除
複数(大量)の同じ名前のファイルを作成
データをロギングする、タイムスタンプで区切って別々のファイルに分割する。
意外と使うことが多い、ファイル名 = 名前+インデックス+拡張子(.csvなど) での複数(大量の)ファイル作成
そのときは以下のコードを使いましょう。
path = "./data/" filename = "sample" filetype = ".csv" filenum = 10 for i in range(filenum): open_filename = path + filename + str(i) + filetype with open(open_filename, mode='w') as f: f.write("1,1,1,1")
これであなたも大量にファイルを製造できちゃう!!
複数(大量)の同じ名前のファイルを作成(ヘッダー付きCSV)
ちなみにCSVファイルを作る際には各行の最後に","をつけたくなりますが、つけないことをオススメします。
それはpandasで読み込むときに無駄に1列、列に追加されてしまうからです。
path = "./data/" filename = "sample" filetype = ".csv" header = "timestamp, data1, data2\n" for i in range(10): open_filename = path + filename + str(i) + filetype with open(open_filename, mode='w') as f: f.write(header) for j in range(10): timestamp_str = str(j) str_data = timestamp_str + ",1,1" f.write(str_data) f.write("\n")
複数(大量)の同じ名前のディレクトリ(フォルダ)にファイルを作成する場合
正直インデックスで分ければいいじゃんと思うかもしれないが、たまに水準を振って、同じファイル名で保存したいときがある。
そんなときはファイル名はそのままで、複数のディレクトリを作成し、分けて入れてあげましょう。
import os path = "./data/" filename = "sample" filetype = ".csv" header = "timestamp, data1, data2\n" for i in range(10): dir_path = path + filename + str(i) if os.path.exists(dir_path) == False: os.mkdir(dir_path) open_filename = dir_path + "/" + filename + filetype with open(open_filename, mode='w') as f: f.write(header) for j in range(10): timestamp_str = str(j) str_data = timestamp_str + ",1,1\n" f.write(str_data)
複数(大量)の同じ名前のファイルを削除
逆に大量のファイルを通流前は一度ディレクトリの中をきれいにしたくなりますよね。
そんなときは以下のコードを使いましょう。
import os import glob path = "./data/" file_type = ".csv" filenames = glob.glob(path + "*" + file_type) for filename in filenames: os.remove(filename)
指定ディレクトリ以下の同じ拡張子のファイルを削除する
複数のディレクトリに渡ってデータを保存しているとき、一度きれいにしたくなることがありますよね。
そんなときは以下のコードを実行しましょう。
import os import glob path = "./data/" file_type = ".csv" filenames = glob.glob(path + "**/*" + file_type) for filename in filenames: os.remove(filename)
指定ディレクトリ以下のすべてのファイル、ディレクトリを削除する
とりあえず問答無用で全部削除してまっさらにしたい!! そんなときありますよね。
そんなときは以下のコードを実行しましょう。
import shutil import os path = "./data/" if os.path.exists(path): shutil.rmtree(path) os.mkdir(path)
CSVファイルを読み込んで配列に格納する
とりあえず文字列でいいからデータの中身を確認したい。
そんなときは以下のコードを使ってください。
path = "./data/" filename = "sample0.csv" with open(path + filename, mode='r') as f: line = f.readline() while line: line = line.replace('\n','') str_data = line.split(',') print(str_data) line = f.readline()
CSVファイルを読み込んで数値として配列に格納する
数値として配列に格納してささっとグラフを書きたい。
そんなときは以下をどうぞ。
path = "./data/" filename = "sample0.csv" with open(path + filename, mode='r') as f: line = f.readline() # headerをスキップ line = f.readline() while line: line = line.replace('\n','') str_data = line.split(',') data = [int(x) for x in str_data] print(data) line = f.readline()