8

一時ディレクトリが必要ですが、その作成と削除を完全に制御したいです。

このディレクトリを使用して、新しいコミットを監視する git リポジトリを配置するため、それらをどこかに永続的に保存する必要があります。

/tmpしたがって、ユーザー(?)がクリアできるので、dirを避けたいと思います。これのベストプラクティスは何ですか?

4

6 に答える 6

8

tempfile.mkdtempあなたのために一時ディレクトリを作成し、その名前を返します。デフォルトでは (Unix ライクなシステムでは) 作成さ/tmpれますが、「可能な限り最も安全な方法で」、呼び出し元のユーザー ID に対してのみ読み取り/書き込み/リストのアクセス許可が付与されます。

>>> d = tempfile.mktemp()
>>> with open(os.path.join(d, "secret")) as output:
...     output.write("Ha, you can't read this!")

(ちなみに、デフォルト設定の Unix/Linux システムでは、ユーザーはお互いのファイルを編集したり、 から削除したりすることはできません/tmp。)

于 2012-01-09T13:32:07.507 に答える
8

を使用するのがベストプラクティスだと思いますtempfile.mkdtemp

その後を使用したくない場合/tmpは、prefixパラメーターを利用できます。

import tempfile
tempfile.mkdtemp(prefix=<your_preferred_directory>)

編集: アプリケーション構成、キャッシュ データなどを保存するのに最も適切なディレクトリについては、Linux を使用している場合は、XDG Base Directory Specificationを参照してください。

于 2012-01-09T13:32:27.690 に答える
2

それが本当に一時的なものである場合は、larmans のアドバイスに従い、 を使用してmkdtempください。

再起動後も存続する必要があるある種の半永久的なキャッシュである場合は、OS で定義されているローカル アプリケーション ディレクトリ (%APPDATA%、~/.local/ など) を使用する必要があります。一部のツールキット (Qt など) は、そのフォルダーをクロスプラットフォームで検索する機能を提供します。

編集:ウィキペディアから:

  • HOME (Unix ライク) および USERPROFILE (Microsoft Windows) - ユーザーのホーム ディレクトリがファイル システム内のどこにあるかを示します。
  • HOME/{.AppName} (Unix ライク) および APPDATA{DeveloperName\AppName} (Microsoft Windows) - アプリケーション設定の保存用。多くのオープン ソース プログラムは、Windows のアプリケーション設定に USERPROFILE を誤って使用します。USERPROFILE は、ユーザーがドキュメント/画像/ダウンロード/音楽などのパスを選択できるダイアログでのみ使用する必要があります。 プログラム目的では、APPDATA (ローミング)、LOCALAPPDATA、または PROGRAMDATA (共有ユーザー間)

そのため、プラットフォームに応じてos.environ['APPDATA']またはを検索し(「 」を参照)、アプリ名を追加すると、必要なものをそこに保存できます。os.environ['HOME']sys.platform

mydir = os.path.join( ".myAppName", "cache")
homeVar = 'HOME'  # default for all *nix variants
if sys.platform == 'win32': 
   homeVar = 'APPDATA'
mydir = os.path.join( os.environ[homeVar], mydir)
于 2012-01-09T13:40:37.483 に答える
0

とはいえ、 git commit hooksを調べることをお勧めします。そうすれば、新しいコミットの tmp ディレクトリを監視する代わりに (奇妙に聞こえます: 権限が制限された tmp ディレクトリにコミットするのは誰でしょうか?)、レポはコミットについて通知するか、より具体的には、コミットが発生するたびにスクリプトを自動的に実行します..

于 2012-01-09T13:52:47.893 に答える
0

http://pypi.python.org/pypi/appdirsは、クロスプラットフォームuser_cache_dir機能を提供する Python モジュールです。

于 2012-01-09T16:48:47.313 に答える
0

通常、プログラムは~/.prognameディレクトリを使用して、永続的である必要があるがユーザーの「邪魔にならないように」保持する必要があるデータを格納します。

于 2012-01-09T13:40:21.257 に答える