追加モードのwrite_text()
へのpython _pathlib.Path
_オブジェクトへのショートカットはありますか?
標準の open()
関数には_mode="a"
_があり、ファイルを開いて書き込みを行い、ファイルが存在する場合はそのファイルに追加します。 Path
s .open()
関数は同じ機能(my_path.open("a")
)を持っているようです。
しかし、便利な.write_text('..')
ショートカットはどうですか、pathlib
を使用してopen()
と同じことを行うだけでファイルを開いて追加する方法はありますか?
明確にするために、私はできる
_with my_path.open('a') as fp:
fp.write('my text')
_
しかし、別の方法はありますか?
my_path.write_text('my text', mode='a')
実際には、pathlibモジュールで確認できるように、2種類のパスクラスが存在します。
これらのクラスコンストラクターのパラメーターは*pathsegments
。
また、利用可能な読み取り/書き込みメソッド(read_text/read_bytesおよびwrite_text/write_bytes)を見ると、モードも利用できないことがわかります。
したがって、すでに発見したように、これらのpathlibクラスでモードを使用できる唯一の方法は、open
メソッドを使用することです。つまり、
with my_path.open("a") as f:
f.write("...")
これは仕様によるもので、pathlibクラスは本当に「クリーン」になっています。また、上記のスニペットはすでに標準的であるため、これ以上単純化することはできません。ただし、コンテキストマネージャの外でopen
メソッドを使用することもできます。
f = my_path.open("a")
f.write("...")
ライブラリpathlibでは、メソッドPath()。write_textおよびPath()。write_bytesがstartmentをクローズしてファイナライズします。例:
from pathlib import Path
Path('file.txt').write_text('my text')
Path('file1.txt').write_bytes(b'my text')
追加(a)などのメソッドで他のモードを使用すると、メソッドはTextIOWrapperを開き、write_ [text | bytes]はTextIOWrapperを自動的に閉じます。
f = Path('file.txt')
f.open("a")
f.write_text('my text')
または
f = Path('file1.txt')
f.open("a")
f.write_bytes(b'my text')
それ以外の場合は手動で閉じる必要があります
f = Path('file1.txt').open('a')
f.write('my text')
f.close()
しかし、このようにすることができます:
fp = Path('test.txt').open('a')
<_io.TextIOWrapper name='test.txt' mode='a' encoding='UTF-8'>
fp.write_text('my text')
fq = Path('test1.txt').open('a', encoding='iso8859-1')
<_io.TextIOWrapper name='test1.txt' mode='a' encoding='iso8859-1'>
fq.write_bytes(b'my text')