Python_ファイル読み込み

ファイル読み込み

ファイル内容を一行ずつ読む

ファイルを閉じるのはPythonのgarbage collectorに任せることもできますが、明示的にclose()したほうがいいといえます。


#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# vim:fileencoding=utf-8
# coding=utf8

import sys
import argparse


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("-f", help="target filename", required=True)
    args = parser.parse_args()

    # ファイルを開く
    fd = open(args.f, 'r')

    # 一行ずつ読み込む
    for line in fd:
        print(line)

    # ファイルを閉じる
    fd.close()


if __name__ == "__main__":
    sys.exit(main())

ファイル内容をリストに保持する。

with内で読み込みを完了することで短く記述できます。


#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# vim:fileencoding=utf-8
# coding=utf8

import sys
import argparse


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("-f", help="target filename", required=True)
    args = parser.parse_args()

    with open(args.f, mode='r', encoding='utf-8') as fd:
        lines = fd.readlines()

    for line in lines:
        line = line.rstrip('\r\n')
        print(line)


if __name__ == "__main__":
    sys.exit(main())

バイナリファイルの読み込み

モードに「b」を指定します。


#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# vim:fileencoding=utf-8
# coding=utf8


import sys
import argparse


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("-f", help="target filename", required=True)
    args = parser.parse_args()

    # 配列を書き込む
    strings = ["str1", "str2", "str3"]
    with open(args.f, mode = 'rb') as imgfile:
        imgsrc = imgfile.read()
        print(type(imgsrc))

        if imgsrc[1:4] == b"PNG":
            print("これはpngファイルです")
        else:
            print("これはpngファイルではありません")


if __name__ == "__main__":
    sys.exit(main())

その他読み込み

アスタリスクを用いて複数ファイルを読む

globをインポートすればアスタリスク指定してファイルを読むことができます。


import glob
for file in glob.glob('*.txt'):

圧縮ファイルファイルの読み込み

圧縮処理ライブラリを用います。

gzipやbz2などのライブラリもあるので、さまざまな圧縮ファイルを読み込めます。


import gzip

with gzip.open('sample.fa.gz', 'rb') as fh:
    for buff in fh.readlines():
        print(buff)


関連ページ