【Python入門】open関数とは?ファイルパスや引数設定(モード)について解説
Pythonでは、テキストファイルの読み込みや、新たなデータを書き込むといった処理が可能です。
テキストファイルの操作を行う際は、open()
関数にてファイルを開く必要があります。
この記事では、open関数の基本的な使い方やファイルパスの設定やモード(読み込み・書き込み)について解説します。
openとは?
open()
は、テキストファイルを読み込み・書き込みできる形で開くための関数です。
対象となるファイルのパス(所在)を渡すことで、プログラム内でファイルの編集や上書きができるようになります。
ただし、ファイルの操作が終わった後はclose()
メソッドにてファイルを閉じる必要があります。
'''
open関数の実行例
'''
path = r"Data\Sample.txt" # pathという変数で、sampleファイルのパス(所在)を保持
f = open(path) # open関数にて開いたファイルの内容をfに保持
print(f.read()) # fの中身を表示
f.close() # 開いたファイル(f)を閉じる
基本的な使い方
open()
関数では、ファイルのパスだけでなく開く際のオプションを指定することが可能です。
指定できる引数は様々あるのですが、今回はその中でも特に使用頻度の高い2つと、パスの設定方法について紹介します。
モード(読み込み方法)の設定
mode
では、ファイルをどのようなモードで開くかを指定できます。
読み込みモードの主な種類は、以下の通りです。
モード | 詳細 |
---|---|
"r" | 既存ファイルを読み込みモード(ない場合はエラー)で開く ※デフォルト |
"w" | ファイルを書き込みモード(保存時は上書き)で開く |
"x" | 新規ファイルを書き込みモード(既にある場合はエラー)で開く |
"a" | ファイルを書き込みモード(保存時は既存内容の下に追記)で開く |
mode
を指定せずにopen()
を実行した場合、デフォルトの値は"r"
となっているため、ファイルの編集・更新ができない状態で開く形になります。
また、"r+"
や"w+"
のように「+」をつけると、ファイルを読み書き両用で開くことが可能です。
path = r"Data\Sample.txt" # pathという変数で、sampleファイルのパス(所在)を保持
f = open(path, mode="w") # ファイルを書き込み(上書き)モードで開き、中身をfに保持
文字コードの設定
encoding
では、ファイルを読み込む際の文字コードを指定できます。
文字コードの主な種類は、以下の通りです。
文字コード | 詳細 |
---|---|
"utf-8" | 世界的に最もポピュラーな文字コード ※デフォルト |
"shift_jis" | Windows環境で使用される、日本語表記が可能な文字コード |
"euc_jp" | UNIX環境で使用される、日本語表記が可能な文字コード |
"iso2022_jp" | 電子メール上で使用される、日本語表記が可能な文字コード |
ファイル内の文字コードとencoding
の指定が異なる場合、文章が正しく読み込めない可能性があります。
特に、日本語を含むファイルの場合は文字化けの要因になりますので注意しましょう。
path = r"Data\Sample.txt" # pathという変数で、sampleファイルのパス(所在)を保持
f = open(path, encodeing="shift_jis") # ファイルをShift JIS形式で開き、中身をfに保持
ファイルパスの設定方法
open()
にてファイルのパス(所在)を指定する際は、絶対パスあるいは相対パスにて記述します。
- 絶対パス…ファイルの所在位置を省略せずに記述したもの
- 相対パス…基準となる地点(プログラムの実行場所)から見た所在位置を記述したもの
また、パスを指定時に通常の文字列で記述してしまうと、区切り文字(\
など)を正しく認識できずエラーになる場合があります。
そのため、指定にはraw文字列を用いて設定を行うのがおすすめです。
r文字列では、文字列の前に「r」あるいは「R」を付ける形で記述します。
'''
スクリプトの実行場所が、"C:\Script"の場合(Scriptフォルダ内にあるプログラムを実行)
'''
f_abs = open(r"C:\Script\Data\Sample.txt") # ファイルを絶対パスで開き、中身をf_absに保持
f_rel = open(r"Data\Sample.txt") # ファイルを相対パスで開き、中身をf_relに保持
応用的な使い方
ここから先では、open()
関数を用いた応用的な使い方についても紹介していきます。
with文を使ってファイルを開く方法
with
文は、処理の終了とともに冒頭で指定した設定を開放する (元に戻す) ための記述法です。
こちらにopen()
関数を組み合わせれば、close()
メソッドを使わなくても自動でファイルを閉じることができます。
また、Pythonではインデント(字下げ)した内容に対して「この部分がwith
文で行う処理」と認識する仕様になっています。
そのため、処理内容については必ず字下げを行うようにしてください。
path = r"Data\Sample.txt" # pathという変数で、sampleファイルのパス(所在)を保持
with open(path) as f: # open関数にて開いたファイルの内容をfに保持
print(f.read()) # fの中身を表示
一行ずつ読み込みたい場合
for
文では、指定した範囲で同じ処理を繰り返し実行することができます。
使用時の記述方法として、「for 変数名 in ~ :」のin
以降にて、反復する値の対象を設定可能です。
その際、ファイルの中身を保持した変数を指定すれば、1行ごとに操作・処理ができるようになります。
path = r"Data\Sample.txt" # pathという変数で、sampleファイルのパス(所在)を保持
with open(path) as f: # open関数にて開いたファイルの内容をfに保持
for line in f: # 1行ごとにlineという変数に保持し、以下の処理を繰り返し実行
print(line) # lineの中身(行単位)を表示
まとめ
この記事では、open()
関数の基本的な使い方やファイルパスの設定やモード(読み込み・書き込み)について解説しました。
open()
を使えば、プログラム内だけでなく外部のファイルに対しても操作を行うことができるようになります。
Pythonを扱う上では必要不可欠な要素ですので、しっかりと基本を押さえておくようにしましょう。