Make

Pythonでファイルをオープンしてから2次元配列で返すモジュール

Make
この記事は約3分で読めます。
スポンサーリンク

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'))

 

コメント

  1. f.readline()等を使わずに
    for line in f:
    といきなり書いていますが、
    このときfには何が入っていて、lineには何が渡されるのでしょうか。
    ファイル内の一行ですか?

    • > ファイル内の一行ですか?

      はい、その想定です。

タイトルとURLをコピーしました