Python入門(十三)ファイル操作
2979 ワード
1.ファイルを開く/閉じる
まずPythonのopen関数を見てみましょう.
open(file, mode='r', buffering=-1, encoding=None)
1)file:ファイル名
2)mode:これは標準cライブラリのfopenのmodeパラメータの値と似ています.
'r':読み取り専用でファイルを開き、ファイルが存在しない場合はIOErrorを放出します.
「w」:ファイルが存在しない場合、自動的にファイルが作成されます.ファイルが既に存在する場合は、ファイルの既存の内容が空になります.
'a':追加で開き、一般的に'w'と併用されます.
'b':このファイルのデータがテキストデータではないことを示すバイナリモードが開きます.
'+':読み取り/書き込みモード、'r+':読み書き方式でファイルを開くことを示し、'w+'は読み書き方式でファイルを開く.
4)buffering:キャッシュを使用するかどうかを示し、キャッシュを使用すると、ファイルにデータを書き込むとき、すぐにファイルに書き込むのではなく、flush()やclose()のときにキャッシュにデータを書き込むまでキャッシュに書き込む.
5)encoding:utf-8などの書き込み文字の符号化を指定する
Open関数が成功するとfile objectが返され、そうでない場合Noneが返されます.
ファイルを閉じる:close()関数close()関数
2.ファイルの読み書き
Openが成功すると、file objectが返されます.ファイルの読み書き関数は、file objectの読み書き関数を呼び出して完了します.
1)write(str):strをファイルに書き込む
2)writelines(seq):シーケンス内の各要素を順次ファイルに書き込む、各要素が改行文字fileを自動的に挿入しないことに注意する.linesep
3)read():ファイル全体のデータを返す
4)readline():ファイル内の1行のデータを返す
5)readlines():listでファイル内の各行のデータを返します.各行の改行が除去されていないことに注意してください.
6)read(nums):指定nums文字を読み込む
EOFが読み込まれるとNoneが返されます.
ファイルが大きい場合は、read()またはreadlines()を呼び出してすべてのデータを一度にメモリに読み込むと、より大きなコンテンツスペースが消費されるため、一般的には一部の読み取りが推奨されます.
上記のコードでは、finallyにf.close()を毎回追加するのは面倒なので、Pythonは2.5の後、with文を導入します.文の終了後にファイルを閉じるのを自動的に助けることができます.異常による終了でも、
3.ファイル反復
Python 2.2からfile objectは反復可能であり、これはforループで直接使用できることを意味する.
実行後の出力は上記と同じですが、コードはより簡潔に見えます.
file objectにはseek,trunscate,flushなどの方法があり,これらの方法はc標準ライブラリの方法に対応している.
まずPythonのopen関数を見てみましょう.
open(file, mode='r', buffering=-1, encoding=None)
1)file:ファイル名
2)mode:これは標準cライブラリのfopenのmodeパラメータの値と似ています.
'r':読み取り専用でファイルを開き、ファイルが存在しない場合はIOErrorを放出します.
「w」:ファイルが存在しない場合、自動的にファイルが作成されます.ファイルが既に存在する場合は、ファイルの既存の内容が空になります.
'a':追加で開き、一般的に'w'と併用されます.
'b':このファイルのデータがテキストデータではないことを示すバイナリモードが開きます.
'+':読み取り/書き込みモード、'r+':読み書き方式でファイルを開くことを示し、'w+'は読み書き方式でファイルを開く.
4)buffering:キャッシュを使用するかどうかを示し、キャッシュを使用すると、ファイルにデータを書き込むとき、すぐにファイルに書き込むのではなく、flush()やclose()のときにキャッシュにデータを書き込むまでキャッシュに書き込む.
5)encoding:utf-8などの書き込み文字の符号化を指定する
Open関数が成功するとfile objectが返され、そうでない場合Noneが返されます.
ファイルを閉じる:close()関数close()関数
f = open(file='data.txt', mode='w+', encoding='utf-8')
if f:
print('open %s success' % f.name)
f.close()
else:
print('open failed')
>>>
open data.txt success
2.ファイルの読み書き
Openが成功すると、file objectが返されます.ファイルの読み書き関数は、file objectの読み書き関数を呼び出して完了します.
1)write(str):strをファイルに書き込む
2)writelines(seq):シーケンス内の各要素を順次ファイルに書き込む、各要素が改行文字fileを自動的に挿入しないことに注意する.linesep
3)read():ファイル全体のデータを返す
4)readline():ファイル内の1行のデータを返す
5)readlines():listでファイル内の各行のデータを返します.各行の改行が除去されていないことに注意してください.
6)read(nums):指定nums文字を読み込む
EOFが読み込まれるとNoneが返されます.
#
f = open(file='data.txt', mode='w', encoding='utf-8')
if f:
print('open %s success' % f.name)
f.write('hello Python
')
lines = ('hello
', 'world')
f.writelines(lines)
f.close()
else:
print('open failed')
#
try:
f = open('data.txt')
print(f.readlines())
except IOError:
print('file IOError')
finally:
f.close()
>>>
['hello Python
', 'hello
', 'world']
ファイルが大きい場合は、read()またはreadlines()を呼び出してすべてのデータを一度にメモリに読み込むと、より大きなコンテンツスペースが消費されるため、一般的には一部の読み取りが推奨されます.
#
try:
f = open('data.txt')
while True:
line = f.readline()
if line:
print(line)
else:
break
except IOError:
print('file IOError')
finally:
f.close()
>>>
hello Python
hello
world
上記のコードでは、finallyにf.close()を毎回追加するのは面倒なので、Pythonは2.5の後、with文を導入します.文の終了後にファイルを閉じるのを自動的に助けることができます.異常による終了でも、
with open('data.txt') as f:
while True:
line = f.readline()
if line:
print(line)
else:
break
3.ファイル反復
Python 2.2からfile objectは反復可能であり、これはforループで直接使用できることを意味する.
#iteraing file object
with open('data.txt') as f:
for line in f:
print(line)
実行後の出力は上記と同じですが、コードはより簡潔に見えます.
file objectにはseek,trunscate,flushなどの方法があり,これらの方法はc標準ライブラリの方法に対応している.