Python 一時ファイルの適切な使用方法を学ぶ

coldplay.xixi
リリース: 2021-03-29 10:57:10
転載
2316 人が閲覧しました

Python 一時ファイルの適切な使用方法を学ぶ

1. はじめに

一時ファイルは通常、メモリに保存できないデータを保存したり、メモリに保存する必要があるデータに渡すために使用されます。ファイルから読み取る外部プログラム。通常、/tmp ディレクトリに一意のファイル名を生成しますが、一時ファイルを安全に作成することはそれほど単純ではなく、多くのルールに従う必要があります。これを自分で実行しようとせず、代わりにライブラリ関数を使用してください。一時ファイルのクリーンアップにも注意してください。

一時ファイルによって引き起こされる最大の問題は、ファイル名が予測できるため、悪意のあるユーザーが一時ファイル名を予測し、一時ファイルをハイジャックするためのソフト リンクを作成できることです。

関連する無料学習の推奨事項: Python ビデオ チュートリアル

##2. tempfile モジュールの概要

一時ファイルの作成に一般的に使用されるモジュールは tempfile です。このモジュール ライブラリの一般的に使用される関数は次のとおりです:

    tempfile.mktemp # 安全ではないため使用禁止
  • tempfile.mkstemp # ランダムに tmp ファイルを作成します。デフォルトで作成されるファイルは /tmp ディレクトリにあります。もちろん、指定することもできます (使用することもできます)
  • tempfile.TemporaryFile # メモリ内にファイルを作成します。ファイルはディスクに保存されません 閉じた後、つまり削除 (使用可能)
  • tempfile.NamedTemporaryFile(delete=True) delete=True の場合、効果は上記と同じです。が False の場合、ディスクに保存されます (使用可能)

3. 例の紹介

次の方法では、安全な方法と安全でない方法を紹介します。一時ファイル。

3.1 間違った例:

間違った 1:

import os
import tempfile
 
# This will most certainly put you at risk
tmp = os.path.join(tempfile.gettempdir(), filename)
if not os.path.exists(tmp):
    with open(tmp, "w") file:
        file.write("defaults")
ログイン後にコピー

間違った 2:

import os
import tempfile
 
open(tempfile.mktemp(), "w")
ログイン後にコピー

間違った 3:

filename = "{}/{}.tmp".format(tempfile.gettempdir(), os.getpid())
open(filename, "w")
ログイン後にコピー

3.2 正しい例

正しい 1:

fd, path = tempfile.mkstemp()
try:
    with os.fdopen(fd, 'w') as tmp:
        # do stuff with temp file
        tmp.write('stuff')
finally:
    os.remove(path)
ログイン後にコピー

正解 2:

# 句柄关闭,文件即删除
with tempfile.TemporaryFile() as tmp:
    # Do stuff with tmp
    tmp.write('stuff')
ログイン後にコピー

正解 3:

tmp = tempfile.NamedTemporaryFile(delete=True)
try:
    # do stuff with temp
    tmp.write('stuff')
finally:
    tmp.close()  # 文件关闭即删除
ログイン後にコピー

関連する無料学習の推奨事項: Python チュートリアル(ビデオ)

以上がPython 一時ファイルの適切な使用方法を学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!