كيف يمكنني نقل الملف إلى صندوق إعادة التدوير / القمامة على منصات مختلفة باستخدام PYQT4؟
-
26-09-2019 - |
سؤال
أرغب في إضافة الميزة التالية إلى تطبيق PYQT4 عبر المنصات: عندما يحدد المستخدم بعض الملفات وتحديد الإجراء "إزالة" على ذلك ، سيتم نقل هذا الملف إلى مجلد BIN لإعادة التدوير بدلاً من إزالته بصراحة. أعتقد أنه يمكنني العثور على حل خاص بنظام Windows باستخدام Win32 API أو شيء مشابه ، لكنني أود أن أعرف أنه يمكن تنفيذ عملية مماثلة على Ubuntu/Linux و Maxosx وكذلك عبر أساليب PYQT4.
المحلول
إنه لأمر جيد أن تستخدم Python ، لقد قمت بإنشاء مكتبة للقيام بذلك منذ فترة:
http://www.hardcoded.net/articles/send-files-to-trash-on-allatforms.htm
على PYPI: send2trash
تثبيت
باستخدام كوندا:
conda install Send2Trash
باستخدام PIP:
pip install Send2Trash
الاستخدام
حذف الملف أو المجلدات
from send2trash import send2trash
send2trash("directory")
نصائح أخرى
أعتقد أنه لا يوجد حقًا حل عبر المنصات التي توفرها QT وهي ليست مهمة تافهة تمامًا لتنفيذ مفهوم القمامة في Linux لأنه مختلف قليلاً بناءً على مدير الملفات المستخدم.
إليك موقع يناقش مفهوم القمامة في نوتيلوس وواحد آخر ل kde.
تحت Windows ، يمكنك استخدام API Win32 كما قلت. حل بيثون متاح هنا.
يضع Mac OS X الملفات المحملة في ~/.trash على غرار Ones *nix Oss ، لكنني لم أستطع بسرعة Google أي وثائق لذلك. يبدو أن ملف معلومات OS X Trash هو نوع من التنسيق الثنائي وليس نصًا عاديًا كما في Linux.
ليس لدى Symbian مفهوم سطح المكتب وبالتالي لا يوجد مفهوم القمامة أيضًا. قد يكون مشابهًا لمنصات المحمول الأخرى.
تعديل: سوبر المستخدم لديه بعض النقاشات التي تكشف أن .DS_STORE يقوم بالفعل بتخزين معلومات حول الملفات المحدودة ، ولكن لا توجد تفاصيل حول التنسيق.
ال أفضل حل OSX أعلم أنه يستخدم Applescript. ومع ذلك ، لم أخترعها ، لذلك سأربطه ببساطة هنا.
سيكون من الجيد أن يكون لديك وحدة نمطية قامت بتعبئة حلول Win32/KDE/OSX إلى واحدة ، وأشعر ، واستيرادها الصحيحة عند الطلب. هل هذه هي الطريقة التي حلت بها مشكلتك في النهاية؟