لا توجد وظيفة تفرخ في بيثون 2.6؟
-
21-09-2019 - |
سؤال
لقد لاحظت للتو أن رمواتي القديمة المكتوبة في بيثون 2.5 لا تعمل الآن. أنا في بيثون 2.6 راجع للشغل.
>>> os.spawnl(os.P_NOWAIT,"setup.exe")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\python26\lib\os.py", line 612, in spawnl
return spawnv(mode, file, args)
OSError: [Errno 22] Invalid argument
>>>
أي فكرة؟ أو هل لديك أي عينة عمل من OS.Spawn* مع خيار Nowait.
تحديث:
حتى أنا وضعت المسار الكامل في os.spawnl () ، لا يزال خطأ.
المحلول
Thrope على حق subprocess
تفضل. لكن الأشياء التي تفرخ* لا تزال موجودة في 2.6. في الواقع ، يمكنك أن ترى ذلك في رسالة الخطأ الخاصة بك. يبدو أن ARG الأول الخاص بك صالح. سأتحقق من ARG الثاني ، وهو المسار.
نصائح أخرى
لقد حصلت على العمل من خلال إضافة معلمة وهمية أخيرًا ، على الرغم من ذلك
هذا لا يعمل
os.spawnl(os.P_NOWAIT,"Setup.exe")
هذا أيضا لا يعمل
os.spawnl(os.P_NOWAIT,"Setup.exe","")
لكن هذا يعمل
os.spawnl(os.P_NOWAIT,"Setup.exe","DUMMY")
شكرا كل على أي حال.
أعتقد أنه يوصى باستخدام عملية فرعية الوحدة النمطية هذه الأيام بدلاً من os.spawn*
المهام. (لا يمكنني إعادة إنتاج مشكلتك ، لكنني لست على Windows).
يظهر بحث Google هذه الصفحة حول نفس المشكلة التي تحدث عندما يكون هناك مساحة في مسار تثبيت Python. لم أستطع إعادة إنتاجه هنا ، لكن ربما هذه هي المشكلة؟
على أي حال، وفقا لوثائق MS يجب إرجاع قيمة الخطأ هذه (Einval) فقط إذا كانت وسيطة الوضع غير صالحة ، وهذا ليس هو الحال هنا.
os.spawnl()
يتطلب مسار كامل للتنفيذ ، بينما os.spawnlp()
يستخدم متغير بيئة المسار للعثور عليه.
تحديث: أيضًا من الخطأ الشائع استخدام عمليات الرضا الخلفية غير المقيدة في المسار الحرفي (حاول طباعته لمعرفة ما إذا كان يتم تفسيره بشكل صحيح).