46

PythonでRAMディスクを作成したい。クロスプラットフォームの方法でこれを実行できるようにしたいので、Windows XP-to-7、Mac、およびLinuxで動作します。通常のドライブのように、できればドライブ文字/パスを使用して、RAMディスクの読み取り/書き込みができるようにしたい。

これが必要な理由は、特定の構造を持つディレクトリを作成するスクリプトのテストを作成するためです。ramdiskにディレクトリを完全に作成したいので、テストが終了した後、ディレクトリが完全に削除されることを確認します。Pythonを使用することを検討しtempfileましたが、テストが途中で停止する場合、ディレクトリが削除されない可能性があります。テストの途中で誰かがコンピューターのプラグを抜いても、完全に削除されていることを確認したいと思います。

4

4 に答える 4

19

PyFilesystemはどうですか?

https://docs.pyfilesystem.org/en/latest/reference/memoryfs.html

https://docs.pyfilesystem.org/en/latest/reference/tempfs.html

欠点は、PyFilesystem APIを使用してファイルシステムにアクセスする必要があることですが、PyFilesystemを使用して実際のfsにアクセスすることもできます。

于 2010-12-04T14:26:07.907 に答える
4

ファイルとディレクトリの処理は非常に低レベルでOSに依存しているため、必要なものが存在する(または可能でさえある)とは思えません。最善の策は、作成されたファイルとディレクトリ階層、およびそれらのコンテンツを追跡する「仮想」ファイルシステムのような関数、クラス、およびメソッドのセットを実装することです。

このようなエミュレーションのCallableは、アプリケーションが使用するさまざまなPython標準の組み込みおよびモジュールの対応するものと同じ署名を持ち、同じ値を返す必要があります。

必ずしもすべてを模倣する必要はないので、実際に使用している量によっては、これは思ったほど多くの作業ではない可能性があります(標準のPythonファイルシステムインターフェイスをエミュレートします)。また、Pure Python ™で記述されている場合は、移植性が高く、保守と拡張も簡単です。

于 2010-12-04T01:00:40.303 に答える
1

os1つのオプションは、モジュールで使用されているメソッドopenとビルトインのメソッドの変更バージョンを注入し(モンキーパッチ)、ディスクではなくファイルにfile書き込むことです。StringIO明らかに、この置換はテスト対象のモジュールに対してのみ発生するはずです。

于 2010-12-04T01:09:55.463 に答える
-7

これを読んで下さい:

http://docs.python.org/library/tempfile.html#tempfile.TemporaryFile

「一時記憶域として使用できるファイルのようなオブジェクトを返します。ファイルはmkstemp()を使用して作成されます。ファイルが閉じられるとすぐに破棄されます(オブジェクトがガベージコレクションされた場合の暗黙的なクローズを含む)。」

それはすべてあなたのために処理されます。何もしなくても、すでに機能しています。

于 2010-12-04T12:36:39.470 に答える