pythonにて、ログや元データがあるテキストファイルを読み込むときに、f = open()・・・等を使用すると思います。
そして、必要に応じて改行の削除やデータを扱いやすいようにするために分割等をしますが、いちいち書いてられないので関数にしてみた。
動作確認はpython3.5です
余談ですが、最近はpython2.7系からpython3系に移行しつつあります。(2.7系しか使えないモジュールもあり一苦労ですが・・・)
例えば下記のようなログデータがあるとします
tama,10,30,50 miku,43,22,45 hatune,45,12,44 usagi,45,76,12
これをpythonにて
[['tama', '10', '30', '50'], ['miku', '43', '22', '45'], ['hatune', '45', '12', '44'], ['usagi', '45', '76', '12']]
のように多次元配列で返すモジュールです。
プログラム
モジュール部分
def file_open(file): import sys data = [] try: f = open(file, 'r', encoding='utf-8') except Exception: print("open error. not found file:", str(file)) sys.exit(1) for line in f: line = line.strip() #前後空白削除 line = line.replace('\n','') #末尾の\nの削除 line = line.split(",") #分割 data.append(line) f.close() return data
example:
#!/usr/bin/env python # -*- coding: UTF-8 -*- def file_open(file): import sys data = [] try: f = open(file, 'r', encoding='utf-8') except Exception: print("open error. not found file:", str(file)) sys.exit(1) for line in f: line = line.strip() #前後空白削除 line = line.replace('\n','') #末尾の\nの削除 line = line.split(",") #分割 data.append(line) f.close() return data #多次元配列にしたいファイル名を入力 print(file_open('out.txt'))
コメント
f.readline()等を使わずに
for line in f:
といきなり書いていますが、
このときfには何が入っていて、lineには何が渡されるのでしょうか。
ファイル内の一行ですか?
> ファイル内の一行ですか?
はい、その想定です。