القائمة الرئيسية

الصفحات

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

 29a1e3b8-3e84-4b14-b60d-0fa97512e420-cd6559189a3c.small


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

deed

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

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

2

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

تعليقات

التنقل السريع