recent
أخبار ساخنة

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

الصفحة الرئيسية
مكتبة subprocess لغة بايثون

مكتبة 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 الآن لنرى النتيجة
stdout python

اما اذا استخدمنا امر غير موجود لدينا في السيستم كالتالي
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])

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

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