1. ホーム
  2. python

[解決済み] Pythonでtmpファイルを作成するには?

2022-12-05 20:28:26

質問

ファイルのパスを参照する関数があります。

some_obj.file_name(FILE_PATH)

ここで、FILE_PATHはファイルのパスを表す文字列で、すなわち H:/path/FILE_NAME.ext

Pythonスクリプトの中に、文字列の内容を持つファイルFILE_NAME.extを作りたいのですが、どうすればよいですか?

some_string = 'this is some content'

どうすればいいのか?Pythonスクリプトは、Linuxボックスの中に設置します。

どのように解決するのですか?

あるところに tempfile モジュール を使うこともできますが、単純なファイル作成でもうまくいきます。

new_file = open("path/to/FILE_NAME.ext", "w")

これで write メソッドを使って書き込むことができます。

new_file.write('this is some content')


を使うと tempfile モジュールでは、次のようになります。

import tempfile

new_file, filename = tempfile.mkstemp()

print(filename)

os.write(new_file, "this is some content")
os.close(new_file)

とは mkstemp を指定すると、そのファイルを使い終わった後に削除する責任があります。他の引数で、ファイルのディレクトリと名前に影響を与えることができます。


アップデイト

によって正しく指摘されたように エメット・スピア があります。 セキュリティの考慮事項 を使用する場合 mkstemp を使用する場合、クライアントコードは作成されたファイルをクローズ/クリーンアップする責任があるからです。これを扱うより良い方法は、次のスニペットです (リンクから取得)。

import os
import tempfile

fd, path = tempfile.mkstemp()
try:
    with os.fdopen(fd, 'w') as tmp:
        # do stuff with temp file
        tmp.write('stuff')
finally:
    os.remove(path)

os.fdopen はファイルディスクリプタを Python のファイルオブジェクトでラップし、そのファイルオブジェクトは with が終了した時点で自動的に閉じられます。の呼び出しは os.remove の呼び出しは、不要になったファイルを削除します。