هل هناك طريقة سهلة لاستخدام Python Tempfile في رفوف (وتأكد من أنه ينظف نفسه)؟

StackOverflow https://stackoverflow.com/questions/1298037

  •  18-09-2019
  •  | 
  •  

سؤال

في الأساس، أريد حجما لا حصر له (أكثر دقة، محرك الأقراص الصلبة بدلا من ملزمة الذاكرة) في برنامج بيثون، أكتب. يبدو أن وحدات Tempfile و Shohve مناسبة بشكل طبيعي لهذا، ومع ذلك، لا أستطيع أن أرى كيفية استخدامها معا بطريقة آمنة. أريد حذف tempfile عند حدوث الرف (أو في ضمان الحذف بعد أن يتم استخدام الرف، بغض النظر عن متى)، ولكن الحل الوحيد الذي يمكنني التوصل إليه مع هذا ينطوي على استخدام tempfile.temporaryfile () لفتح مقبض ملف، والحصول على اسم الملف من المقبض، باستخدام اسم الملف هذا، مع فتح رفوف، مع الحفاظ على المرجع إلى مقبض الملف لمنعه من الحصول على القيطالية (والملف المحذوف)، ثم وضع غلاف على الرف المرجعي. أي شخص لديه حلا أفضل من هذه الفوضى الملتوية؟

القيود: يمكن فقط استخدام مكتبة Python القياسية ويجب أن تكون منصة كاملة.

هل كانت مفيدة؟

المحلول

أفضل أن يرث من الرف .elf، وتجاوز الطريقة الإغلاق (*) لإلغاء ربط الملفات. لاحظ أنه، اعتمادا على وحدة DBM الخاصة التي يتم استخدامها، قد يكون لديك أكثر من ملف واحد يحتوي على الرف. يمكن أن يكون أحد الحلول لإنشاء دليل مؤقت، بدلا من ملف مؤقت، وإزالة أي شيء في الدليل عند الانتهاء. سيكون الحل الآخر هو ربط وحدة نمطية ل DBM معينة (على سبيل المثال، bsddb، أو dumbdbm)، وإزالة هذه الملفات هذه الملفات التي تنشئها هذه المكتبات.

(*) لاحظ أن الطريقة الوثيقة من الرف يسمى أيضا عندما يتم جمع الجرف القمامة. الحالة الوحيدة التي يمكن أن تنتهي بها مع ملفات القمامة هي عندما تعطل المترجم أو يقتل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top