職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

pathlibモジュール

2021年03月07日 | Python
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」


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」ファイルを表示する


【バイナリファイルの読み書き】
バイナリファイルからバイトデータを読み込んだり、バイナリファイルへバイトデータを書き込んだりテキストを書き込む場合→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 ']
>>>
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする