بحث
6 سكربتات بايثون الأساسية لبدء رحلتك البرمجية
البرمجة #بايثون #برمجة

6 سكربتات بايثون الأساسية لبدء رحلتك البرمجية

منذ يوم 5 مشاهدة 0 تعليق 2 دقائق قراءة
5 مشاهدة
0 إعجاب
0 تعليق
موثوق 95%

تعتبر بايثون واحدة من أكثر اللغات سهولة في التعلم، وذلك بفضل نهجها القائم على الكائنات وبنيتها النحوية البسيطة. تتضمن المكتبة القياسية العديد من الوحدات المفيدة التي يمكنك استخدامها لكتابة جميع أنواع البرامج، الكبيرة والصغيرة. تتميز السكربتات هنا بأنها صغيرة، مع تركيز ضيق على مهمة مفيدة، ويمكنك استخدامها ليس فقط للأنشطة اليومية، ولكن أيضًا للبناء عليها وتوسيعها لوظائف إضافية.

1 إعادة تسمية الملفات دفعة واحدة

يمكن أن تكون إعادة تسمية مجموعة من الملفات مهمة صعبة. إذا كنت تتذكر بناء جملة الصدفة، يمكنك كتابة أمر على الفور، أو يمكنك الاعتماد على برنامج تابع لجهة خارجية مثل rename. هذا البرنامج البسيط بلغة بايثون يقوم بإعادة تسمية جميع الملفات في الدليل الحالي الذي يحتوي على نص محدد، مستبدلاً ذلك النص بنمط معين. يمكنك استخدامه، على سبيل المثال، لتغيير مجموعة من الامتدادات من ".htm" إلى ".html."

import os, sys if len(sys.argv) < 3: sys.exit("usage: " + sys.argv[0] + " search replace") for filename in os.listdir("."): new_filename = filename.replace(sys.argv[1], sys.argv[2]) if new_filename != filename: os.rename( os.path.join(".", filename), os.path.join(".", new_filename), ) 

يستورد السكربت مجموعة من الوحدات المفيدة على مستوى منخفض: os و sys. يستخدم الأخير على الفور للتحقق من عدد المعطيات (sys.argv) ويخرج إذا تم إعطاء عدد قليل جدًا. ثم يقوم حلقة for الرئيسية بالتكرار عبر جميع أسماء الملفات في الدليل الحالي (.). تحاول طريقة replace من فئة السلسلة استبدال المعطى الأول بالثاني. تتبع عملية فحص نهائية لمعرفة ما إذا كان اسم الملف قد تغير، تليها دعوة إلى os.rename() التي تقوم بتحديث الملف إذا لزم الأمر. يفتقر هذا السكربت إلى معالجة الأخطاء الشاملة، ويجب عليك تقييد استخدامه للبحث والاستبدال البسيط للسلاسل. كن دائمًا حذرًا مع العمليات الجماعية التي قد تؤثر على العديد من الملفات.

2 صانع الصور المصغرة

يوضح السكربت المكون من أربعة أسطر قوة مكتبة مريحة، وفي هذه الحالة، Pillow. هذه النسخة من مكتبة معالجة الصور بلغة بايثون تحتوي على العديد من وظائف معالجة الصور، لدعم أي شيء من السكربتات البسيطة إلى محررات الرسوميات الكاملة. ستحتاج إلى تثبيت مكتبة Pillow قبل أن تتمكن من تشغيل هذا السكربت. brew install pillow كان يعمل بشكل جيد بالنسبة لي على macOS، ولكن يمكنك أيضًا تجربة pip الذي توصي به صفحة التثبيت.

يستخدم السكربت ثلاث طرق من وحدة Image لفتح ملف، وإنشاء صورة مصغرة، وحفظها في ملف ثانٍ:

from PIL import Image image = Image.open("image.jpg") image.thumbnail((500, 500)) image.save("image_thumb.jpg") 

لاحظ كيف تأخذ وظيفة الصورة المصغرة معطى واحد، وهو عبارة عن مجموعة. ستقوم بإنشاء صورة بنفس نسبة الأصل، مع عرض وارتفاع أقصى وفقًا للأبعاد التي تقدمها. من تلقاء نفسها، فإن هذا له استخدام محدود نظرًا لأن اسم الملف والأبعاد مشفرة. يمكنك توسيع وظيفتها من خلال تمرير هذه القيم كمعطيات سطر الأوامر بدلاً من ذلك، باستخدام نسخة ثانية من السكربت التي ليست أكبر بكثير:

from PIL import Image import sys if len(sys.argv) < 4: sys.exit("usage: " + sys.argv[0] + " image width height") image = Image.open(sys.argv[1]) image.thumbnail((int(sys.argv[2]), int(sys.argv[3]))) image.save("thumb.jpg") 

لاحظ أن اسم ملف الصورة المصغرة النهائي لا يزال مشفرًا. كتمديد إضافي، يمكنك إنشاء اسم ملف بناءً على الأصل، أو قبول معطى رابع من سطر الأوامر.

3 خادم ويب بسيط

يمكن أن يكون خادم الويب الأساسي مفيدًا جدًا؛ أستخدم واحدًا لتصفح والوصول بسرعة إلى الملفات على جهازي المحلي. يمكن أن يكون أيضًا أداة مفيدة لتطوير الويب. قليل من خوادم الويب بسيطة مثل هذه:

import http.server, socketserver port = 8001 with socketserver.TCPServer( ("", port), http.server.SimpleHTTPRequestHandler ) as httpd: print(f"Serving at port {port}") httpd.serve_forever() 

تقوم وحدات http.server و socketserver بمعظم العمل هنا. يتم تمرير مثيل TCPServer العام إلى منفذ ومعالج الطلبات البسيط الذي يقدم الملفات من الدليل الحالي عبر HTTP. تتعامل طريقة serve_forever (التي يتم وراثتها من فئة socketserver.BaseServer) مع الطلبات حتى يتم استدعاء طريقة shutdown(). كما تحذر وثائق بايثون، فإن وحدة http.server تفتقر إلى الأمان المناسب وليست للاستخدام في الإنتاج. على الرغم من أن هذا مجرد خادم تجريبي، إلا أنه رائع للاستخدام الشخصي وبساطته لا تضاهى.

4 مولد كلمات المرور العشوائية

سواء كان لحساب مستخدم جديد، أو نموذج ويب، أو عملك الخاص في التطوير، غالبًا ما يُطلب كلمة مرور عشوائية. من المحتمل أن تستخدم مدير كلمات المرور للقيام بذلك، لكن هذا ليس دائمًا مناسبًا. مع سكربتك الخاص، يمكنك التحكم في التفاصيل الدقيقة وتعديله ليناسب احتياجاتك.

import string, random def main(length: int) -> str: characters = string.ascii_letters + string.digits + string.punctuation return "".join(random.choice(characters) for i in range(length)) print(main(32)) 

يستخدم هذا السكربت وحدات string و random لإنشاء كلمة مرور عشوائية في خمس أسطر فقط من التعليمات البرمجية. تحتوي وحدة string على بعض الثوابت المفيدة التي تحتوي على مجموعات من الأحرف الفردية مثل الأرقام والحروف. من خلال دمج هذه واختيار رقم عشوائي، يقوم السكربت بتجميع سلسلة من الأحرف لإنتاج كلمة المرور النهائية.

Output from a password.py script run three times, each time showing a random series of characters including letters, digits, and punctuation.
Output from a password.py script run three times, each time showing a random series of characters including letters, digits, and punctuation.

5 أداة فحص أسعار العملات الرقمية

يظهر هذا السكربت قوة واجهة برمجة التطبيقات النظيفة والبسيطة. تستخدم الواجهة التي يعتمد عليها - من coingecko - بروتوكول HTTP، لذا فهي محمولة جدًا وسهلة الدعم. قبل تشغيل هذا السكربت، تحقق من استجابة واجهة برمجة التطبيقات من نقطة النهاية التي يستخدمها، /simple/price. يجب أن ترى أنها تعيد بيانات بتنسيق JSON مع إدخالات للعملات المرسلة في معطى ids.

import urllib.request, json def get_crypto_prices(): url = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,litecoin&vs_currencies=usd" ufile = urllib.request.urlopen(url) text = ufile.read() return json.loads(text) crypto_prices = get_crypto_prices() for coin, value in crypto_prices.items(): print(f"{coin.capitalize()}: ${value['usd']}") 

تتضمن وحدة urllib.request طريقة urlopen() التي تسترجع محتويات عنوان URL وتعيد كائن HTTPResponse. قراءة نصه وتمريره إلى طريقة json.loads() يبني كائن قاموس مكافئ. يعتبر JSON تنسيقًا شائعًا جدًا لواجهات برمجة التطبيقات على الويب، لأن بنيته البسيطة وقابليته للقراءة البشرية تجعل من السهل تحليله واختباره.

6 مولد جدول ASCII

تعتبر مجموعة أحرف ASCII مجموعة من 128 حرفًا شائعًا من اللغة الإنجليزية، تُستخدم في سياقات الحوسبة المختلفة. تدعم معظم لغات البرمجة تحويل رموز ASCII إلى أحرف فردية، والعكس صحيح، لكن من المفيد أحيانًا رؤية جميع أحرف ASCII مرة واحدة.

for i in range(32, 128): print("{:03d}".format(i) + " " + chr(i), end=" ") if (i - 1) % 10 == 0: print() print() 

يظهر هذا السكربت جدولًا يحتوي على جميع أحرف ASCII من 32 إلى 127، كل منها بجانب نقطة الرمز الخاصة به: أول شيء يجب ملاحظته هو كيف تعالج دالة range() المدمجة في بايثون معطياتها؛ فهي تتكرر بدءًا من الأول، ولكنها تتوقف قبل أن تصل إلى الثاني. في لغة مثل JavaScript، ستبدو حلقة for المعادلة كالتالي:

معظم العمل المتبقي يتمثل في سطر print() ويتضمن تنسيق كل نقطة كود بعرض ثابت من ثلاثة أماكن. تقوم دالة chr() بإرجاع حرف بناءً على كود ASCII الخاص به. إحدى الخصائص المفيدة لـ ASCII، التي توضحها هذه الجدول، هي أن كود كل حرف صغير (من a إلى z) يزيد بمقدار 32 عن نظيره الكبير. الحيلة المتبقية هي طباعة حرف سطر جديد في النقطة المناسبة، بحيث يتم تقسيم الناتج بشكل جميل إلى صفوف. يستخدم هذا العامل % للتحقق من باقي قسمة فهرس النطاق على 10، مما يضمن وجود عشرة أحرف في كل سطر.

The output from a python script showing an ASCII table, with codepoints from 32 to 127 and the corresponding character alongside.
The output from a python script showing an ASCII table, with codepoints from 32 to 127 and the corresponding character alongside.

هذا هو الجزء الأخير من مقالنا حول سكربتات بايثون الأساسية والمفيدة. لقد استعرضنا في الأجزاء السابقة بعض السكربتات التي يمكن أن تساعدك في بدء رحلتك في البرمجة باستخدام بايثون. إذا كنت مبتدئًا، فإن هذه السكربتات ستمنحك فكرة جيدة عن كيفية استخدام بايثون في مهام مختلفة. تذكر أن الممارسة هي المفتاح، لذا حاول تعديل السكربتات وتجربتها بنفسك. لا تنسى أن هناك الكثير من الموارد المتاحة عبر الإنترنت لمساعدتك في تعلم المزيد عن بايثون وتطوير مهاراتك. استمر في التعلم واستمتع ببرمجة بايثون!

لمزيد من المعلومات، تابعنا على منصاتنا المختلفة.

التعليقات 0

سجل دخولك لإضافة تعليق

لا توجد تعليقات بعد. كن أول من يعلق!