التعرف على مكتبة subprocess في بايثون Python الدرس | 16 | - Programmer Tech

Programmer Tech

موقع تعليم مجاني يهتم بتعلم البرمجة و علوم الكمبيوتر, أمن المعلومات, القرصنة الأخلاقية, سكربتات

إعلان اعلى المقالة

الأحد، 8 مارس 2020

التعرف على مكتبة subprocess في بايثون Python الدرس | 16 |


مكتبة subprocess

الـ subprocess هي module او مكتبة موجودة لدينا في بايثون تمكننا من التعامل مع سطر الأوامر command line لرؤية stdout و stderr وهي مهمة جداً جداً و سوف نتعامل معها في السكيورتي و في الشبكات.

مثال 1
ننشأ ملف بايثون مثلاً على سطح المكتب بإسم subprocess_.py ونكتب بداخله

from subprocess import PIPE , Popen
p = Popen  ("tasklist",stdout=PIPE,stderr=PIPE,shell=True)
print(p.communicate()[0])

شرح المثال السابق

قلنا بالمثال انه لدينا process و استخدمنا به Popen وأخذ مننا بعض الارجيومنت و اولها tasklist الذي هو موجود لدينا ضمن النظام و ثانيا stdout و ثالثاً الخطأ stderr اذا وجد خطأ و الـ shell يساوي True ,وهذه من الاساسيات في الـ process ,و بعدها لرؤية النتيجة استخدمنا p.communicate سيعرض لنا Tuple عنصرين لا اكثر , الاول stdout ,والثاني stderr .
نشغل الامر بـ cmd الآن لنرى النتيجة 


اما اذا استخدمنا امر غير موجود لدينا في السيستم كالتالي
from subprocess import PIPE , Popen
p = Popen  ("tasklist",stdout=PIPE,stderr=PIPE,shell=True)
print(p.communicate()[0])

عند التشغيل لن يعرض لنا اي شيئ لأن الامر غير موجود , و اذا نريد عرض الرساله غير موجود نستخدم نغير بدل الـ 0 نضعها 1 لعرض الاخطاء كالتالي
from subprocess import PIPE , Popen
p = Popen  ("lskd",stdout=PIPE,stderr=PIPE,shell=True)
print(p.communicate()[1])

سيعطينا النتيجة التالية 


اذا نريد ان تعرض النتيجة بشكل منتظم نستخدم كالتالي بملفنا
from subprocess import PIPE , Popen
p = Popen  ("tasklist",stdout=PIPE,stderr=PIPE,shell=True)
print(p.communicate()[0].decode("utf-8"))
ستكون النتيجة نفسها لكن بشكل مرتب .

ليست هناك تعليقات:

إرسال تعليق

facebook

تسميات

تواصل معنا

Translate

أخر الافكار

من انا

authorمبرمجين ويب و محبين للتقنية و الشبكات و امن المعلومات و سوف نقدم لكم الافضل إن شاء الله
أعرف المزيد ←

نموذج الاتصال

الاسم

بريد إلكتروني *

رسالة *

اقسام