ロゴ

プログラミング初心者がアプリ開発を目指すブログ

【Python入門】ファイル操作の基本と変数への代入 – Python初心者勉強記017

ここでは、Pythonでのファイルの基本操作とファイルから読み込んだデータを変数に読み込ませる方法について詳しく見ていきたいと思います。

ファイルの基本操作

ファイル書き込みの基本

ファイルの書き込み・読み込みにはopen関数を使います。ファイル書き込みの場合は、open関数の引数のモードを”w”にして、writeメソッドによって文字列を書き出します。最後にcloseメソッドを呼び出して全ての書き込みを終了します。


>>> f = open('test.txt','w')
>>> f.write("abc")
>>> f.close()

以上のコードを実行すると、test.txtが作成されます。
ファイル書き込みの結果

ファイル読み込みの基本

次はファイル読み込みを行ってみます。読み込みの場合はopen関数の引数のモードを’r’にして、readメソッドによって、ファイルの終端(EOF)までの全てのデータを文字列として読み込みます。先ほどのtest.txtを読み込みます。


>>> f = open('test.txt','r')
>>> f.read()
'abc'
>>> f.close()

行ごとに書き込み

ファイルに行ごとに書き込みを行う場合は、writeメソッドを複数回使用するか、writelinesメソッドに行のイテラブルなオブジェクトを渡します。どちらも、行末部分に改行コードが必要になります。


>>> f = open('test.txt','w')
>>> f.write("abc\n")
>>> f.write("def\n")
>>> f.close()


>>> f = open('test.txt','w')
>>> f.writelines(['abc\n','def\n'])
>>> f.close()

上記はどちらも同じ実行結果になります。

行ごとに読み込み

行ごとに読み込みを行う場合には、
1.readlineメソッドを連続して使用する
2.readlinesメソッドによって行のリストを得る
3.ファイルオブジェクトをイテレートで回す
の3つの方法があります。それぞれ見ていましょう。


>>> f=open('test.txt','r')
>>> f.readline()
'abc\n'
>>> f.readline()
'def\n'
>>> f.readline()
''


f=open('test.txt','r')
>>> f.readlines()
['abc\n', 'def\n']


>>> f=open('test.txt','r')
>>> [line for line in f]
['abc\n', 'def\n']

tab区切りのファイルを行ごとに読み込んで変数に入れる


[test.text]
1¥t2¥n
3¥t4¥n

というtab文字区切りで整数が並んだファイルがあるとします。
これを各行ごとに読み込み、各行ごとの「数」のリストをつくることを考えていきます。

まず、タブ区切りで各行の中身を切り分けるためにsplit(‘¥t’)を用います。


f=open('test.txt','r')
for line in open f
    itemList = line[:-1].split('¥t')

このとき、line[:-1].split(‘¥t’)とすることで、行末の改行文字を無視しています。

つぎに、itemlistの中身を「文字列→int」に変換してnumbersという変数に代入します。for文を用いて一気に作業することができます。


>>> for line in f:
...     items = line[:-1].split('\t')
...     numbers=[int (item) for item in items]
...     print numbers
... 
[1, 2]
[3, 4]

1列目をa,2列目をbという変数に入れたいときは以下のようにします。


>>> f=open('test.txt','r')
>>> for line in f:
...     items = line[:-1].split('\t')
...     a,b=[int (item) for item in items]
...     print a,b
... 
1 2
3 4

1行目の1列目をa[0],2列目をb[0]
2行目の1列目をa[1],2列目をb[1]
といった形で保持しておきたいときは


>>> a=[]
>>> b=[]
>>> f=open('test.txt','r')
>>> for line in f:
...     items = line[:-1].split('\t')
...     a.append(int(items[0]))
...     b.append(int(items[1]))
... 
>>> a
[1, 3]
>>> b
[2, 4]
>>> 

次回はさらに複雑なファイル操作を見ていきます。

Python入門講座の次の記事はこちら => 【Python入門】ファイルへの追加書き込み 日本語ファイルの操作 – Python初心者勉強記018

スポンサード リンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA