Python ファイル処理 読み込み・書き込み スクリプトの書き方

バイオインフォ道場、くまぞうです。

Pythonでファイル処理を行う場合の、読み込み・書き込みについて簡単な操作を確認します。

スポンサーリンク



Python ファイル処理 ファイルオブジェクト

Pythonでファイル処理を行う場合は、open関数の戻り値として得られたファイルオブジェクトに対して操作を行います。ファイルを開くときに、モードで読み込み(”r”)・書き込み(”w”)を指定します。読み込みはreadlines関数、書き込みはwrite関数などを使います。1行ずつ読み書きしたり、複数行を一度に処理したり、用途に応じて使い分けます。ファイル操作が終わったら、close関数でファイルを閉じます。

ファイル読み込み

ファイル名を指定してファイルをopenします。読み取りのモード(r)を指定します。readlines()で1行ずつの読み込み、line変数に内容を格納します。1行分(読み込み単位)のデータに対して処理を行います。最後にcloseします。

  f = open(file_name, "r")
  for line in f.readlines():
      print line.strip()  # 内容表示 など

  f.close()

ファイル書き込み

ファイル名を指定してファイルをopenします。書き込みのモード(w)を指定します(追記モードはa)。writeで1行ずつ書き込みます。最後にcloseします。

  f = open(file_name, "w")
  f.write("hello world!")

  f.close()

サンプル

ファイル処理を使った、Pythonのスクリプト例です。fastaファイルを読みこんでヘッダー情報だけを連結しながら取得します。最後に>を目印にして分割し、別のファイルに書き込みます。

file_test.py

  file_name  = "my.fasta"
  all_header = ""

  f = open(file_name, "r")  # 読み込み
  for line in f.readlines():
      if line[0] == '>':
          all_header += line.strip()

  f.close()

  print all_header
  all_header = filter(lambda x: x!='', all_header.split('>'))
  print all_header
  print

  f = open(file_name+".write", "w")  # 書き込み
  for x in all_header:
      f.write(x+"\n")

  f.close()

my.fasta

  >cds1
  ATGGTGGGTGGCAAGAAGAAAACCAAGATATGTGACAAAGTGTCACATGA
  TTTGGCAATCGGTTCCTGGATTGGACTTAGACCCCTACGCATCCTCAAAT
  GAAATGTTGCCAACGCTTCTTGAGAGCTGCCCAAAACTTGAATCTCTCAT
  >cds2
  ATGGTTCAATATAATTTCAAGAGGATCACAGTTGTTCCCAATGGGAAGGA
  GCACGTCGTGGTGAAGCTGACAGAGTTATACCAACGCTTAGACCGAAACA
  AACCGACAGGCGTTGA
  >cds3
  ATGACTCGTTTGTTGCCTTACAAAGGTGGAGATTTTTTGGGACCGGATTT
  CCGAGGTATACCTCTACCTTATCTTTCTGAATTAACTGTGAGCTTCATAG
  GCAAAAATTAAGATTGGTGAATGCTCAAAACGTAAAAAGGATAAGCAAGT
  >cds4
  ATGGATTCAGAGTCAGAGTCAAAGCTCATATCATTCATTTCTCAATTAGT
  ATCATGCATGATACAAACAATCTCTCTGGTCAGCTCAATGGATTTGAAGT
  ATCTATTTCGGTAACTTCTTCTCATGTATGCAATGTGATTATATTCTCCA
  >cds5
  ATGTCGGTTCCTCCTAGATTCCGGTCCGTAAATTCCGATGAGCGAGAGTT
  GCTGCAGAGGAAACCACCGGGGATGAAACTGGAGAAGCCGATGATGGAGA
  GAGAGAGAGTGATAAATAA

実行と結果

  $ ls
  my.fasta
  file_test.py

  $ python file_test.py 
  >cds1>cds2>cds3>cds4>cds5
  ['cds1', 'cds2', 'cds3', 'cds4', 'cds5']

  $ cat my.fasta.write
  cds1
  cds2
  cds3
  cds4
  cds5
スポンサーリンク