pathlibモジュールを使ったファイルの読み書き
【開発環境】
OS:Win10(64ビット)
言語:Python3.8.5(64bit)
Python の統合開発環境:IDLE
IDLEの操作は別サイト参照のこと
【pathlib モジュール】
パスに対する Path クラスのインスタンスを作成し、用意されたメソッドを使ってファイルの操作を行います。
【Pathクラスのインスタンスを作成する】
・Path クラスのインスタンスを作成するには次のコンストラクタを使用
書式
class pathlib.Path(*pathsegments)
例文
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import pathlib
>>> path = './Data/movie'→自分の環境に合わせる
>>> p = pathlib.Path(path)
>>> type(p)
<class 'pathlib.WindowsPath'>
>>>
他にも
class pathlib.PosixPath(*pathsegments)
や
class pathlib.WindowsPath(*pathsegments)
がある。
【テキストファイルを読み込む】
書式
Path.read_text(encoding=None, errors=None)
ファイル「name.txt」
![](https://blogimg.goo.ne.jp/user_image/61/cb/2a78216c6e967d1b2d151cad47184f0d.jpg)
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import pathlib
>>> p = pathlib.Path('D:/Data/name.txt')
>>> print(p.read_text())
yamada
Andou
kuroki
>>>
・テキストファイルを行単位で読み込む場合
>>> p = pathlib.Path('D:/Data/name.txt')
>>> f = p.open('r')
>>> while True:
data = f.readline()
if data == '':
break
print (data.rstrip('\n'))
yamada
Andou
kuroki
>>>
【テキストファイルを書き込む】
テキストファイルへテキストを書き込む場合には Path クラスで用意されている write_text メソッドを使用する
・書式
Path.write_text(data, encoding=None, errors=None)
1 番目の引数で指定したテキストを、パスが示すファイルへ書き込みます。省略可能な 2 番目の引数には文字エンコーディングを指定します。
サンプルコード
>>> import pathlib
>>> p = pathlib.Path('D:/Data/name2.txt')
>>> p.write_text('Suzuki\nHonda\n')
13
>>> print(p.read_text())
Suzuki
Honda
>>>
「name2.txt」ファイルを表示する
![](https://blogimg.goo.ne.jp/user_image/3e/d5/1c1ba84082e62a4130e7eec89be53373.jpg)
【バイナリファイルの読み書き】
バイナリファイルからバイトデータを読み込んだり、バイナリファイルへバイトデータを書き込んだりテキストを書き込む場合→read_bytesメソッド及びwrite_bytes メソッド
サンプルコード
>>> import pathlib
>>> p = pathlib.Path('D:/Data/name3.txt')
>>> p.write_bytes(b'ABCDEFG')
7
>>> data = p.read_bytes()
>>> print(data)
b'ABCDEFG'
>>>
【サンプルプログラムを書く】
「sample12-1.py」ファイルに下記のようなコードを書いて保存する
import pathlib
p = pathlib.Path('D:/Data/name.txt')
data = p.read_text()
print(data.split('\n'))
実行する
======================== RESTART: D:/Data/sample12-1.py ========================
['yamada', 'Andou', 'kuroki ']
>>>