1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

python ファイルの読み書き

Last updated at Posted at 2022-12-11

with文を使おう!

with open(ファイル名, 'w', encoding=文字エンコード) as 変数:
……(ファイルを操作する処理)

※コロン「:」の後に、文を続けて書くこともできるが、pep8では推奨されていない
※with文を使わずopen関数でファイルを開いて書き込んだり、読み込んだりすることもできるが、最後にclose関数でファイルを閉じる必要がある。with文は、インデントブロックが終了すると自動的にファイルを閉じてくれるので、ファイルの閉め忘れ防止という意味でもwith文を使おう!

  • open関数の第1引数は、操作したいファイル名を書く
  • open関数の第2引数は、'w'(write:書き込み)、'r'(read:読み込み)、'a'(append:追加書き込み)、'r+'(読み込んでから書き込み)、'w+'(書き込んでから読み込み)などがある。第2引数を省略した場合は、'r'(読み込み)になる。
  • open関数の第3引数(キーワード引数)は、ファイルの読み書きの文字エンコーディングを現す。utf-8(UTF-8), shift-jis(シフトJIS), enc-jp(日本語EUC)などがある。

ファイルに書き込んでみよう!

test.txtというファイルを作成して書き込んでみる。

※指定したファイルが存在しない場合、ファイルを作成し、指定したファイルが存在する場合は、上書きが行われる。注意!!

exam.py
with open('test.txt', 'w', encoding='utf-8') as file:
    file.write('HELLO!\n')
    file.write('ENJOY PYHON!\n')
test.txt
HELLO!
ENJOY PYHON!

test.txtが作成され、文字列が出力されました。

作成したファイルを読み込んでみよう。

exam2.py
# 第2引数を省略。'r'が適応される
with open('test.txt', encoding='utf-8') as file:
    # test.txt1の全文を読み込み
    print(file.read())

>>>
HELLO!
ENJOY PYHON!

enumerate関数を使うと出力時に番号を付けることも可能!

exam2.py
# 第2引数を省略。'r'が適応される
with open('test.txt', encoding='utf-8') as file:
    # test.txt1の全文を読み込み
    for number, text in enumerate(file, 1):
        print(number, text, end='')

>>>
1 HELLO!
2 ENJOY PYHON!

csvファイルを書き込もう!

import csv

with open(ファイル名, 'w', encoding=文字エンコード, newline='') as 変数:
csv.writer(ファイル).writerows(イテラブル)
※newlineは改行を抑制する効果がある。これを指定しないと改行が余分に出されて、文と文の間に空行が入ってしまうため、newline=''のようにする。
※writer(ライター) writerows(ライトローズ)

csv.writer(ファイル名).writerows(イテラブル)※1行だけ書き込む

変数 = csv.writer(ファイル名) # 変数に代入して使う
変数.writerrow(イテラブル)

exam3.py
import csv

memo = [('beef', 600), ('pork', 500), ('chiken', 400)]
with open('memo.csv', 'w', encoding='utf-8', newline='') as file:
    csv.write(file).write
    csv.writer(file).writerows(memo)
memo.csv
beef,600
pork,500
chiken,400

csvファイルを読み込もう!

with open(ファイル名, encoding=文字エンコード) as 変数:
for 変数 in csv.reader(ファイル名):
……
※reader()は、イテラブルとして働き、値をリストで返す。

exam4.py
import csv 

with open('memo.csv', encoding='utf-8') as file:
    for row in csv.reader(file):
        print(row)
    file.seek(0)
    print([tuple(i) for i in csv.reader(file)])
>>>
['beef', '600']
['pork', '500']
['chiken', '400']
[('beef', '600'), ('pork', '500'), ('chiken', '400')]
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?