ioモジュールでファイルの書き込み・読み込みを行うストリームの機能が提供されています。
組込関数openでストリームのインスタンスを作成し、ファイルの読み込み・書き込みを行うことができます。
with open('./sample.txt', 'w', encoding='utf-8') as f:
f.write('テスト1\n')
f.write('テスト2')
with open('./sampl_b.txt', 'wb') as f:
f.write(b'abc')
with open('./sample.txt', 'r', encoding='utf-8') as f:
print(f.read())
openの第1引数はファイルのパス、第2引数は読み込み・書き込みのモードです。
* r 読み込み用
* w 書き込み用(最初にファイルをクリア)
* x 排他的な作成用(ファイルが存在するとエラー)
* a 追記用
* b バイナリーモード
* t テキストモード
* '+' 読み書き用
rとtはデフォルトで指定されます。
ioモジュール以下にopen
のエイリアスの関数も定義されています。
io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
with open('./sample.txt', 'w', encoding='utf-8') as f:
print(f.writable()) # => True 書き込み可能
print(f.tell()) # => 0 ストリーム位置
print(f.closed) # => False ストリームクローズしていない
f.write('テスト1\n')
f.writelines(['テスト2\n','テスト3'])
print(f.tell()) # => 34 ストリーム位置
f.close()
print(f.closed) # => True ストリームクローズ
with open('./sample.txt', 'r', encoding='utf-8') as f:
print(f.readable()) # => True 読み込み可能
print(f.tell()) # => 0 ストリーム位置
print(f.closed) # => False ストリームクローズしていない
print(f.readline()) # => テスト1 1行読み込み
print(f.readlines()) # => ['テスト2\n', 'テスト3'] 行の配列で読み込み
f.close()
print(f.closed) # => True ストリームクローズ
with io.FileIO('./sampl_b2.txt', 'w') as f, io.TextIOWrapper(f,encoding='utf-8') as tw:
tw.write('あいうえお')
with io.FileIO('./sampl_b2.txt', 'r') as f, io.TextIOWrapper(f,encoding='utf-8') as tw:
print(tw.read()) # => うえ
with io.StringIO() as f:
f.write('テスト\n')
print(123, file=f)
print(f.getvalue())
# テスト
# 123
with open('./sampl_b.txt', 'wb') as f:
f.write(b'xyz')
with open('./sampl_b.txt', 'rb') as f:
f.read()
with io.FileIO('./sampl_b.txt', 'w') as f:
f.write(b'xyz')
with io.FileIO('./sampl_b.txt', 'r') as f:
print(f.read()) # => b'xyz'
with io.FileIO('./sampl_b.txt', 'wb') as f,io.BufferedWriter(f) as bw:
bw.write(b'112233')
with io.FileIO('./sampl_b.txt', 'rb') as f,io.BufferedReader(f) as br:
print(br.read()) # => b'112233'
with io.BytesIO(b"abc") as f:
print(f.read()) #=> b'abc'
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント