
getoutput, אבל לא מחזיר את פלט השגיאה. זו שיטה פשוטה ולא מלאה.returncode מחזיר 0 כשהפקודה הצליחה, וערך אחר כשנכשלה.Reply. אחר כך שולפים את הזמן בעזרת פיצול או ביטוי רגולרי.wait מחכה לסיום, poll בודק אם הסתיים, ו-terminate ו-kill עוצרים אותו.subprocess.Popen("ping google.com", shell=True, stdout=PIPE, stderr=PIPE)out, err = p.communicate()p.returncodeהטקסט המלא של הדקות הראשונות בהרצאה «process» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בשיעור הזה אנחנו נדבר על איך להעריץ פרוסס בפייתון. כשאני מתכוון בפרוסס, אני אומר להעריץ כל תוכנה, כמו להעריץ איזשהו קובץ אחר, להערים תוכנה כמו מחשבון, או להעריץ פקודה כמו דיר או פינג דרך תוכנת פייתון שלנו ולקבל את התוצאות.
אז פעם היו, פעם וגם היום, יש כמה דרכים להעריץ בפייתון. הדרך הכי פשוטה אולי זה לעשות us.system הדבר הזה הוא הדרך הכי פשוט, אתה מביא לו פשוט את הסטרינג שאתה רוצה להריץ, נגיד במקרה שלנו דיר, הוא מדפיס ל-stdout את התוצאה ומחזיר לך האם התוצאה, האם הפקודה נכשלה או הצליחה, הוא מחזיר בעצם את הערך קבלה של הפקודה,
אז a אז דיר הצליחה ולכן מוחזר לנו 0 וזה מוחזר למסך אבל זה פחות מועיל כי אין לנו את ההדפסות. דרך עוד אופציה, מודול שהוא באמת quick and dirty כזה, מודול שנקרא commands, יש לנו פה באמת get output, לקבל את ה-output ולקבל
את ה-output והסטטוס, אבל פה אנחנו לא מקבלים למשל את ה-std error. אז בסופו של דבר בפייתון החליטו לעשות סדר בקהילה, ויצרו מודול אחד שנקרא sub process.
sub process, הפונקציה הכי שימושית שם זה popen. אז בואו נראה איך אנחנו משתמשים בה: p=subprocess.popen, פה אנחנו אומרים את הפקודה שאנחנו רוצים להריץ, נגיד דיר.
עכשיו, בגלל שזאת פקודה שרצה בשל, אז צריך לכתוב של שווה true. עכשיו, אם אנחנו רוצים לכתוב משהו ל-stdout של האפליקציה ולקבל את ה... ול-std-error שלה, אז צריך לכתוב גם את הדבר הזה, std-error שווה ל-subprocess.pip.
ואותו דבר צריך לעשות גם ל-std-in ול-std-out, std שווה לזה ולפייפ ו std error std out גם שווה לזה לאחר שעשינו את הדבר הזה אנחנו יכולים לעשות פשוט out r שווה לp.communicate כאשר פה זה האינפוט למשל אם יש לנו תוכנה שעושה אינטראקציה נגיד התוכנה אולי מבקשת סיסמה אז אנחנו פשוט כותבים
פה את הסיסמה ופה אנחנו למשל פסוורד ופה פה אנחנו מקבלים חזרה את ה-STD-OUT ואת ה-STD-ERROR ומזה אנחנו יכולים להבין האם הצלחנו להיכנס למערכת או לא הצלחנו להיכנס למערכת ולפי זה להמשיך ברצף של התוכנית.
אני חייב רק לזרוק שאם אתם באמת רוצים לעשות משהו כזה לתקשור עם פרוסס אז יש מודולים ברמה יותר גבוהה אחד מהם הוא נקרא נגיד PECSPECT הוא חינמי והרבה יותר מומלץ מלהשתמש בסאב פרוסס אבל בואו באמת נתחיל מהדברים האלה אז אנחנו לא שולחים שום דבר לדיר, אלא פשוט עושים דיר, ואז עושים פרינט לאאוט.
בואו נריץ את זה. הנה, הרצנו את דיר, ובאמת, הפעם קיבלנו את זה לתוך משתנה, אז אני יכול גם לעשות לו פרוססינג ולהתייחס אליו.
מה קורה אם אני רוצה לעשות דיר לאיזושהי תיקייה מסוימת? אז, dier של c.2/Python27 ויש לנו פה בעצם את מה שיש ב-c ו-Python27.dlls.doc וכו'.
ככה מריצים פקודה. בואו למשל נריץ פינג פשוט לגוגל נקודה קום, וזה לקח שנייה וחצי, אבל כי הפקודה פינג לוקחת.