Python3 で普通に wf.write
とか使ってると間違えやすいbytesの話です
mode='w+b'
がデフォルトで採用されているからであって、mode
を指定してやればよかっただけの話でした。コメントで指摘してくださった @tag1216 さんに感謝。
import tempfile
with tempfile.NamedTemporaryFile(delete=False) as tf:
word = "hoge" + '¥n'
tf.write(word)
>>> TypeError: a bytes-like object is required, not 'str'
型違えば怒られますよね……ということで でも良いのですが str
型をbytes
型に変えておきましょう。mode='w+t'
を指定してテキストモードで開いた方がスマートに解決できます
# bytes型に変換してから書き込む
import tempfile
with tempfile.NamedTemporaryFile(delete=False) as tf:
word = "hoge" + '¥n'
word_bytes = word.encode('uft-8')
tf.write(word_bytes)
# mode='w+t'を指定して開く
import tempfile
with tempfile.NamedTemporaryFile(mode='w+t', encoding='utf-8', delete=False) as tf:
tf.write('hoge' + '¥n')
今度tempfileの使い方でまとめておくので雑記事で許してください。では