Wie kann ich eine ramdisk in Python?
Möchte ich zum erstellen einer ramdisk in Python. Ich möchte in der Lage sein, dies zu tun in einer cross-Plattform-Weg, damit es funktioniert auf Windows XP-7, Mac, und Linux. Ich möchte in der Lage zu Lesen/schreiben auf die ramdisk, wie es ein normales Laufwerk, vorzugsweise mit einem Laufwerksbuchstaben/Pfad.
Der Grund, warum ich wollen, das ist zum schreiben von tests für ein Skript, das erzeugt ein Verzeichnis mit einer bestimmten Struktur. Ich will erstellen Sie das Verzeichnis komplett in die ramdisk, damit ich sicher sein, es würde komplett gelöscht werden, nachdem die Prüfungen vorbei sind. Als ich über Python ' s tempfile
, aber wenn der test gestoppt, in der Mitte das Verzeichnis kann nicht gelöscht werden. Ich will ganz sicher, dass es auch dann gelöscht, wenn jemand den Stecker zieht, auf dem computer in der Mitte von einem test.
- Ich vermute eher, dass es keine einfache, cross-Plattform-Weg, dies zu tun, da jedes OS Griffe Montage anders. Sehr interessante Frage, aber!
- "wenn der test gestoppt, in der Mitte das Verzeichnis kann nicht gelöscht werden" haben Sie irgendwelche Beweise dafür? Das widerspricht der Dokumentation.
- Ich kann mir vorstellen, wenn der test nicht (bekommen eine chance) bereinigen nach sich selbst. In dem Fall würde ich argumentieren: Warum nicht einfach das test-setup gewährleistet einen sauberen Zustand (Verzeichnis löschen, wenn erforderlich, vielleicht), unabhängig von bestehenden Zustand?
- Die Datei wird gelöscht, wenn er geschlossen ist. Es gibt keine "Bereinigung" im test -- das löschen ist Teil der OS-definition der Datei. Nichts zu tun mit irgendeiner Anwendungssoftware.
- Benutzer von
mkdtemp()
ist verantwortlich für das löschen der temporären Verzeichnis und seinen Inhalt, wenn Sie fertig mit ihm." Von Pythontempfile
docs. - Ich will, dass die Rechner sauber bleiben, Müll Verzeichnisse/Dateien zwischen den Testläufen als auch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie etwa PyFilesystem?
http://docs.pyfilesystem.org/en/latest/memoryfs.html#module-fs.memoryfs
http://docs.pyfilesystem.org/en/latest/tempfs.html#module-fs.tempfs
Der Nachteil ist, dass Sie Zugriff auf das Dateisystem mit PyFilesystem API -, Sie können aber auch den Zugriff auf das Reale fs mit PyFilesystem.
os.mkdir
(und andere Funktionen), die aufMemoryFS
. Wenn keine solche Funktionen vorhanden sind, werde ich zu schreiben mein eigenes.Weil Datei-und Verzeichnis-handling ist so low-level-und OS-abhängig, ich bezweifle, dass so etwas, was Sie wollen, vorhanden ist (oder sogar möglich). Ihre beste Wette sein könnte, um die Implementierung einer "virtuellen" Datei-system-ähnlichen Satz von Funktionen, Klassen und Methoden nachverfolgen von Dateien und Verzeichnis-Hierarchie zu erstellen und deren Inhalte.
Callables in solch einer emulation würde, müssen die gleiche Signatur und den gleichen Wert zurückgeben(s) als Ihre Kollegen in den verschiedenen Python-standard-built-ins und Module, die Ihre Anwendung verwendet.
Ich vermute, dass dies möglicherweise nicht so viel Arbeit wie es klingt -- die Emulation der standard-Python-Datei-system-Schnittstelle-je nachdem, wie viel man eigentlich mit, da Sie nicht zwangsläufig zu imitieren, es. Auch, wenn geschrieben Reines Python™, es wäre auch tragbar und leicht zu pflegen und zu erweitern.
Eine option sein könnte, um zu injizieren (monkey patch), modifizierte Versionen der Methoden, die bei der
os
- Modul sowie die geliefertenopen
undfile
schreiben zuStringIO
Dateien statt auf der Festplatte. Offensichtlich ist diese substitution sollte nur erfolgen, für die das Modul getestet;os.mkdir
in einer ähnlichen Weise.os.mkdir
?Bitte Lesen Sie diese:
http://docs.python.org/library/tempfile.html#tempfile.TemporaryFile
Es ist alles für Sie verarbeitet. Nichts tun und schon klappt es.
mkdtemp()
ist verantwortlich für das löschen der temporären Verzeichnis und seinen Inhalt, wenn Sie fertig mit ihm."