ファイルの読み書き
ファイルパス
ファイルの存在しているディレクトリを含めた指定をファイルパスと呼びます。
code: python
filepath = '/tmp/junk.txt' # 絶対パス指定
filepath = './junk.txt' # 相対パス指定
filepath = '../tmp/junk.txt' # 相対パス指定
現在の作業ディレクトリは . 、親ディレクトリは.. で表すこともできます。
ファイルのオープン
Pythonでファイルの読み書きをするためには、まずopen()を使います。
open() は open(filename, mode) のように2つの引数を伴って呼び出されます。
第1引数にファイル名、第2引数にモードと呼ばれる操作内容を与えます。
モードには次の種類があり、省略すると r が与えられたものとして処理されます。
r : 読み出し専用
w: 書き込み専用 / 既にファイルが存在すると消去される
r+: 読み書き両用
a: フィアルに追加
b: バイナリファイルとしてオープンする
ファイルのクローズ
open() でオープンされたファイルオブジェクトは close() でクローズします。
close() しないファイルオブジェクトは、Pythonスクリプトが実行されている間、
メモリ上に存在します。
ファイルの読み込み
Python でファイルから読み込むときは、read(), readline(), readlines() を使います。
read(): ファイルの内容を全てそのまま読み込んで返す。
readline(): ファイル内容を1行読み込む。再度呼ばれると次の行を返す。
readlines(): ファイルの内容をすべて読み込み、行として処理して返す。
次のファイルがあるとして、実行例をみてみましょう。
code: data.txt
大阪Pythonの会
大阪でPythonに関する勉強を行うコミュニティ
read() はフィアルの内容を全てそのまま読み込んで、文字列オブジェクトとして返します。
code: 0301_read.py
f = open('data.txt')
data = f.read()
f.close()
print(type(data))
print(data)
lines = data.split('\n')
for line in lines:
print(line)
readlines() は read() とよく似ていますが、ファイルの内容を全て読み込んで、行として処理したリストオブジェクトを返します。
code: 0302_readlines.py
f = open('data.txt')
data = f.readlines()
f.close()
print(type(data))
print(data)
for line in data:
print(line)
readline() はファイルの内容を1行ごとに読み込みます。
code: 0303_readline.py
f = open('data.txt')
line = f.readline()
print(type(line))
while line:
print(line)
line = f.readline()
f.close()
ファイルの書き込み
Python でファイルに書き込むには、write(), writelines() を使います。
write(): 引数に与えられた文字列をファイルに書き出す。
writelines(): 引数に与えられた文字列のリストをファイルに書き出す。
code: 0304_write.py
f = open('data.txt')
data = f.read()
f.close()
f = open('new_data.txt', 'w')
f.write(data)
f.close()
code: 0305_writelines.py
data = """“A wise man changes his mind sometimes, but a fool never.
To change your mind is the best evidence you have one.”
― Desmond Ford
"""
f = open('new_data.txt', 'w')
f.writelines(data)
f.close()