Python を利用したファイルの読み書き

ファイル

ファイルを取り扱うとき、ファイルの名前と文字コードを同時に指定することが推奨される。ファイルを開くとき、open をそのまま利用しても良いが、より安全な方法として with 文とともに用いる。with 文を用いることで、プログラムがファイルの読み込み中に異常終了しても、ファイルが自動的に正しく閉じられる。

ファイルの読み込み

次は、PDB ファイル(1ALK.pdb)を読み込み、3 文字のアミノ酸コードを抽出する例である。アミノ酸コードは SEQRES 行にかかれているため、if 文を利用して SEQRES 行を探して、データを取得する。

aa = ''

with open('1ALK.pdb', mode = 'r', encoding = 'utf-8') as fh:
  for buff in fh:
    if buff[0:6] == 'SEQRES':
      buff = buff.rstrip()
      aa += buff[19:]

aa = aa.replace(' ', '')
print(aa)

ファイルの書き出し

ファイルを作成する場合は、ファイルを書き込みモード w あるいは追加書き込みモード a で開く。書き込みモードで開くとき、ファイルが既に存在している場合はその内容が破棄される。追加書き込みモードでは、既存のファイルの下側に、内容を追加する。

名前が new.fa となるファイルを新規作成する場合は次のようにする。

with open('new.fa', mode = 'w', encoding = 'utf-8') as fh:
  fh.write('>NEW SEQ A\n')
  fh.write('ACGATTTTATGCTGATCGTAGCTGTAGTCTAGCTGTCTGTC\n')

名前が sample.txt となるファイルに新しいデータを書き込み上書き保存する場合は次のようにする。ただし、sample.txt が存在しない場合は、新規作成される。

with open('new.fa', mode = 'a', encoding = 'utf-8') as fh:
  fh.write('>NEW SEQ B\n')
  fh.write('GATCGTAGCTGTAGTCTAGCTGTCTGTGGCATTATTTTGTA\n')

gzip ファイルの読み書き

gzip ファイルの読み込み

import gzip

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

gzip ファイルの書き出し

import gzip

with gzip.open('sample.fa.gz', 'wb') as fh:
    fh.write(b'>Seq1\nGCTGATCGAGTCGATCGATGCAGCTAGGT\n')
    fh.write(b'>Seq2\nTCGATTATATGCTAGTCGATGCTTTCGATGCGCT\n')
    fh.write(b'>Seq3\nGCTGAATCGCTATTATATGCATGCATGTCTGCAGCTAGGCT\n')