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)