لا تحكم من stderr وحده. [1] [2]
الخلاصة السريعة
المثال
import subprocess as s,sys
for rc,msg in[(0,'note'),(7,'')]:
code='import sys;'
code+='sys.stderr.write('
code+=repr(msg)+');'
code+='sys.exit('+str(rc)+')'
r=s.run(
[sys.executable,'-c',code],
capture_output=True,text=True)
print(r.returncode,
repr(r.stderr))الناتج: 0 'note' ثم 7 ''. [1] [2]
استخدمنا الالتقاط ووضع النص؛ لذلك stderr نص في المثال. [1] [2]
الفحص
إضافة check=True للاستدعاء ترفض الرمز غير الصفري، لا مجرد وجود رسالة. [1] [2]

التفسير
في مثالنا stderr فارغ للرمز 7؛ عدم النص لا يلغي هذا الرمز. الصفر ليس اختبارًا لمحتوى العمل. [1] [2]
نفرق وثائق 3.15 من المفسر المختبر؛ شغّلنا برامجنا المؤلفة دون مفسر أوامر أو خدمة خارجية. [1] [2]
المراجع
- Python: subprocess
- CPython 3.12.14: subprocess.py
- Python: sys
- موضوع تك: لغة بايثون — مفردات
- موضوع تك: تطبيقات بايثون — مفردات
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
