مقدمة
كشخص بدأ للتو في تعلم بايثون ، أحاول اكتساب معارف ومهارات جديدة من خلال الممارسة المباشرة. في رأيي ، هذا النهج أفضل من العمل على أدلة البرمجة ومجلدات متعددة. بادئ ذي بدء ، مع مشاريع مثل المشروع الذي سأتحدث عنه ، أحاول إغلاق احتياجاتي. في المقام الثاني ، يتمنى أن يتمكن شخص آخر من الاستفادة مما أقوم بإنشائه (
بعد إصلاح جميع الأخطاء الموجودة )
جاءت فكرة هذا البرنامج في وقت كنت أحاول فيه العثور على ملف تم تنزيله مسبقًا بين "البيانات المهملة" المشكلة في مجلد "التنزيلات". الصور والمستندات والمحفوظات ومقاطع الفيديو مع الموسيقى: يمكنك فهم هذا التشويش وتصفية الملفات ، بالطبع ، لكنك متردد بسبب التكلفة الكبيرة للوقت. واعتقدت أنه من الجيد أن يكون هناك برنامج يقوم بتحليل مجلد "التنزيلات" وتوزيع الملفات في المجلدات القياسية لأنظمة "الصور" و "المستندات" و "مقاطع الفيديو" و "الموسيقى" ، وحذف الملفات غير الضرورية. نتيجة لذلك ، وُلد منظم الكمال ، والذي أود التحدث عنه. يجب أن أقول على الفور أن هذه مقالة من المبتدئين إلى المبتدئين ، لأن المبرمجين ذوي الخبرة في بيثون لن يجدون أي شيء مفيد هنا (
باستثناء القدرة على البحث في الكود والإشارة إلى الكثير من الأخطاء ).
فكرة عامة
أول شيء يجب أن يقوم به البرنامج هو تحديد نظام التشغيل الذي يعمل عليه. يعد ذلك ضروريًا لأن مجلد التنزيلات على نظامي Linux و Windows يقع بطرق مختلفة (لا أمتلك القدرة على اختبار البرنامج على جهاز Mac ، لأنني لم أضع نظام التشغيل هذا في الاعتبار). في مجلد التنزيل الذي تم اكتشافه ، يمر البرنامج بجميع الملفات المتاحة ويحدد نوع الملفات التي ينتمون إليها (الموسيقى والفيديو والمستندات وما إلى ذلك). بعد ذلك ، يتم نقل الملفات المكتشفة إلى المجلدات الافتراضية والبرنامج يكتشف من المستخدم ما يجب فعله بالملفات غير المناسبة للنقل - الإجازة أو الحذف.
استيراد المكتبات المطلوبة وتحديد نوع النظام
للعمل مع نظام التشغيل والملفات الموجودة فيه ، نحتاج إلى مكتبة
نظام التشغيل .
ستتيح لك مكتبة
getpass معرفة اسم المستخدم على النظام ، وستحدد
المنصة ما إذا كان Windows أو Linux أم لا. نقوم بتوصيل جميع المكتبات اللازمة في البداية عن طريق الاستيراد ثم تحديد نوع نظام التشغيل واسم المستخدم.
import os import getpass import platform type_os = platform.system() usermane = getpass.getuser()
إنشاء قاموس مع امتدادات الملفات الشائعة والمجلدات الافتراضية المرتبطة بها
باستخدام أدوات Python القياسية ، نقوم بإنشاء أربعة قواميس مع أنواع الملفات الأكثر شيوعًا: الموسيقى والصور ومقاطع الفيديو والمستندات.
video_folder = {".3gp" : "/", ".avi" : "/", ".flv" : "/", ".m4v" : "/", ".mkv" : "/", ".mov" : "/", ".mp4" : "/", ".wmv" : "/", ".webm" : "/"} music_folder = {".mp3" : "/", ".aac": "/", ".flac" : "/", ".mpc" : "/", ".wma" : "/", ".wav" : "/"} pic_folder = {".raw" : "/", ".jpg" : "/", ".tiff" : "/", ".psd" : "/", ".bmp" : "/", ".gif" : "/", ".png" : "/", ".jp2" : "/", ".jpeg" : "/"} doc_folder = {".doc" : "/", ".docx" : "/", ".txt" : "/", ".rtf" : "/", ".pdf" : "/", ".fb2" : "/", ".djvu" : "/", ".xls" : "/", ".xlsx" : "/", ".ppt" : "/", ".pptx" : "/", ".mdb" : "/", ".accdb" : "/", ".rar" : "/", ".zip" : "/", ".7z" : "/"}
لا تنس أنه بعد اسم المجلد ، سيستمر اسم الملف ، لأنه في النهاية لدي /. تتم إضافة أنواع الملفات الجديدة بسهولة عن طريق تحرير القاموس.
نطلب من المستخدم اسم مجلد التنزيل
في نظامي Windows و Linux ، يظهر مجلد التنزيل على النظام بأسماء مختلفة. بالنسبة لنظام Windows ، هذا بغض النظر عن تعريب مجلد التنزيلات ، ثم على توزيعات Linux يسمى هذا المجلد "التنزيلات". بالإضافة إلى ذلك ، قد يحدث أن يغير المستخدم اسم المجلد بالملفات التي تم تنزيلها وتحتاج إلى السؤال عما إذا كان اسم الدليل الحالي يختلف عن الأسماء القياسية.
if type_os == "Linux": user_downloads_path = input(" ? (-: ) ") or "" if type_os == "Windows": user_downloads_path = input(" ? (-: ) ") or "Downloads"
يسمح لك
أو build باستخدام القيم الافتراضية في
الإدخال . أي إذا لم يكن لدى المستخدم أي تغييرات في اسم المجلد مع التنزيلات ، فليست هناك حاجة لفعل أي شيء ، فسيقوم البرنامج نفسه باستبدال القيم اللازمة في الرمز الإضافي.
قم بتعيين المسار إلى مجلد التنزيل
بناءً على نظام التشغيل ، قد يوجد مجلد التنزيل في أماكن مختلفة. بالنسبة إلى نظام Linux ، يوجد هذا المجلد على المسار
/ home / اسم المستخدم / Downloads / ، بينما على نظام Windows ، يكون المسار
C: / Users / اسم المستخدم / Downloads / . من أجل عدم وصف هذه المسارات يدويًا في وقت لاحق ، من السهل إنشاء متغيرات يتم تحديد هذه المسارات فيها.
if type_os == "Linux": default_path_d = "/home/" + usermane + "/" + user_downloads_path + "/" else: default_path_d_win = r"C:/Users/" + usermane + r"/" + user_downloads_path+ r"/"
قم بتعيين المسار إلى مجلد التنزيل لمستخدم معين
لاستخدام إمكانات الوحدات النمطية المتصلة مسبقًا للعمل مع نظام التشغيل والملفات ، يجب علينا تعيين المسار إلى مجلد التنزيل باستخدام المتغيرات التي أنشأناها وتلقيناها مسبقًا.
if type_os == "Linux": downloads_path = os.listdir("/home/" + usermane + "/" + user_downloads_path) else: downloads_path_win = os.listdir(r"C:/Users/" + usermane + r"/" + user_downloads_path)
حسنًا ، أيضًا لتوفير مزيد من الاستخدام للرمز ، حددنا مسار
اسم المستخدم / النموذج
/ المجلد الرئيسي if type_os == "Linux": default_path_u = "/home/" + usermane + "/" else: default_path_u_win = r"C:/Users/" + usermane + r"/"
تحقق من وجود ملفات محددة في مجلد التنزيل
من خلال تعداد القاموس ، نقارن مفاتيحه بإضافات الملفات الموجودة في مجلد التنزيل. إذا تطابق الملحق مع المفتاح ، فيجب نقل الملف الضروري إلى المجلد الافتراضي المقابل (يكون اسمه هو القيمة في القاموس).
في البداية ، خططت لحل مشكلة البحث عن امتدادات الملفات باستخدام التعبيرات العادية وشاركت في صياغتها. ولكن بعد ذلك قرأت على أحد المواقع التي إذا كنت ترغب في حل مشكلة ، فآخر ما تحتاجه هو استخدام التعبيرات العادية. بيثون لديها طرق أسهل وأكثر بديهية لفعل ما هو مطلوب منك. لذلك ، بدلاً من هذه التعبيرات ، يتم تحديد ملحق الملف باستخدام طريقة السلسلة
endswith () . يأخذ المفتاح من القاموس ويتحقق مما إذا كان الملف ينتهي به. ثم ، باستخدام طريقة
split () ، يتم أخذ اسم الملف فقط لمزيد من الحركة باستخدام
os.rename () . كوسيطات لهذا الأخير ، يتم استخدام جميع المتغيرات التي تم إنشاؤها مسبقا.
نسأل المستخدم ما يجب القيام به مع الملفات المتبقية.
بعد فرز الملفات الضرورية ، يجب على البرنامج إما إنهاء أو حذف تلك الملفات التي لم تندرج تحت هذه الخطوة (على سبيل المثال ، ملفات exe أو deb-package). يتم اتخاذ القرار من قبل المستخدم ؛ بشكل افتراضي ، لا يحدث الحذف.
لتلخيص
حاولت أن أشرح كيف كان البرنامج الذي قمت بإنشائه يعمل بشكل واضح قدر الإمكان. لكنني أعتقد أن أولئك الذين يريدون فهم ما زالوا يراجعون الشفرة نفسها عدة مرات. Perfectionist Organizer متاح في نسختين - وحدة التحكم والرسوم البيانية. يمكنك العثور على كليهما على الرابط الخاص
بي Github ، وهناك إرشادات حول كيفية تنزيل البرنامج واستخدامه. قمت بتشغيل إصدار وحدة التحكم على نظام التشغيل الرئيسي الخاص بي (Archlinux) وإصدار واجهة المستخدم الرسومية في جهاز ظاهري على نظام التشغيل Windows 7. وفي كلتا الحالتين ، عمل البرنامج مع اثارة ضجة. أريد أيضًا إرفاق عرض توضيحي لكيفية عمله في نظام Linux. إذا كان هذا الموضوع ممتعًا لشخص ما ، فعندئذٍ في المقالة التالية ، سوف أخبرك كيف صنعت نسخة واجهة المستخدم الرسومية والصعوبات التي واجهتها.
الخطط المستقبلية
التالي في السطر هو برنامج يذكرك بالأحداث المهمة من جدول أوراق Google في Telegram. بمجرد الانتهاء من ذلك سأخبرك هنا. يمكنك ترك أي أسئلة وتعليقات حول عمل Perfectionist Organizer في التعليقات أو في PM. شكرا لاهتمامكم!