このモジュールを使うと、一時的なファイルやディレクトリを生成できます。 このモジュールはサポートされている全てのプラットフォームで利用可能 です。
バージョン 2.3 の Python では、このモジュールに対してセキュリティを 高める為の見直しが行われました。現在では新たに 3 つの関数、 NamedTemporaryFile()、 mkstemp()、および mkdtemp() が提供されており、安全でない mktemp を使いつづける必要をなくしました。 このモジュールで生成される一時ファイルはもはやプロセス番号を 含みません; その代わり、6 桁のランダムな文字からなる文字列が 使われます。
また、ユーザから呼び出し可能な関数は全て、一時ファイルの場所や 名前を直接操作できるようにするための追加の引数をとるように なりました。もはや変数 tempdir および template を 使う必要はありません。以前のバージョンとの互換性を維持するために、 引数の順番は多少変です; 明確さのためにキーワード引数を使うことを お勧めします。
このモジュールではユーザから呼び出し可能な以下の関数を定義しています:
[mode='w+b' [,
bufsize=-1 [,
suffix[, prefix[, dir]]]]]) |
生成されたファイルを一旦閉じなくてもファイルを読み書きできるように
するために、mode パラメタは標準で 'w+b'
に設定されています。
ファイルに記録するデータが何であるかに関わらず全てのプラットフォームで
一貫性のある動作をさせるために、バイナリモードが使われています。
bufsize の値は標準で -1
で、これはオペレーティングシステム
における標準の値を使うことを意味しています。
dir、prefix および suffix パラメタは mkstemp() に渡されます。
[mode='w+b' [,
bufsize=-1 [,
suffix[, prefix[,
dir]]]]]) |
バージョン 2.3 で 新たに追加 された仕様です。
[suffix[, prefix[, dir[, text]]]]) |
TemporaryFile() と違って、mkstemp() で生成された ファイルが用済みになったときにファイルを消去するのはユーザの責任です。
suffix が指定された場合、ファイル名は指定された 拡張子で終わります。そうでない場合には拡張子は付けられません。 mkstemp() はファイル名と拡張子の間にドットを追加 しません; 必要なら、suffix の先頭につけてください。
prefix が指定された場合、ファイル名は指定された プレフィクス(接頭文字列) で始まります; そうでない場合、標準の プレフィクスが使われます。
dir が指定された場合、一時ファイルは指定されたディレクトリ 下に作成されます; そうでない場合、標準のディレクトリが使われます。
text が指定された場合、ファイルをバイナリモード (標準の設定) かテキストモードで開くかを示します。使用するプラットフォームによっては この値を設定しても変化はありません。
mkstemp() は開かれたファイルを扱うための OS レベルの値 とファイルの絶対パス名が順番に並んだタプルを返します。 バージョン 2.3 で 新たに追加 された仕様です。
[suffix[, prefix[, dir]]]) |
mkdtemp() によって作られたディレクトリとその内容が用済みに なった時、にそれを消去するのはユーザの責任です。
prefix、suffix、および dir 引数は mkstemp() のものと同じです。
mkdtemp() は新たに生成されたディレクトリの絶対パス名を 返します。 バージョン 2.3 で 新たに追加 された仕様です。
[suffix[, prefix[, dir]]]) |
警告: この関数を使うとプログラムのセキュリティホールになる可能性 があります。この関数が返したファイル名を返した後、あなたがそのファイル名 を使って次に何かをしようとする段階に至る前に、誰か他の人間が あなたにパンチをくらわせてしまうかもしれません。
このモジュールでは、一時的なファイル名の作成方法を指定する 2 つの グローバル変数を使います。これらの変数は上記のいずれかの関数を最初 に呼び出した際に初期化されます。関数呼び出しをおこなうユーザは これらの値を変更することができますが、これはお勧めできません; その代わりに関数に適切な引数を指定してください。
None
以外に設定された場合、このモジュールで定義されて
いる関数全てのdir 引数に対する標準の設定値となります。
tempdir が設定されていないか None
の場合、上記のいずれかの
関数を呼び出した際は常に、Python は標準的なディレクトリ候補のリスト
を検索し、関数を呼び出しているユーザの権限でファイルを作成できる
最初のディレクトリ候補を tempdir に設定します。リストは以下の
ようになっています:
) |
None
でない場合、単にその内容
を返します; そうでない場合には上で記述されている検索が実行され、
その結果が返されます。
None
以外の値を設定した場合、mktemp()
が返すファイル名のディレクトリ部を含まない先頭部分 (プレフィクス) を
定義します。ファイル名を一意にするために、 6 つのランダムな文字および
数字がこのプレフィクスの後に追加されます。Windows では、標準の
プレフィクスは~T です; 他のシステムでは
tmp です。
このモジュールの古いバージョンでは、os.fork() を呼び出した
後に template
を None
に設定することが必要でした;
この仕様はバージョン 1.5.2 からは必要なくなりました。
) |