バイオインフォ道場、くまぞうです。
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
[amazonjs asin=”4797353953″ locale=”JP” title=”みんなのPython 改訂版”]
スポンサーリンク
![バイオインフォ 道場 [bioinfo-Dojo]](https://bioinfo-dojo.net/wp-content/uploads/2016/03/some_object_luca-bravo-alS7ewQ41M8-unsplash.jpg)

