سؤال

لقد لاحظت للتو أن رمواتي القديمة المكتوبة في بيثون 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() يستخدم متغير بيئة المسار للعثور عليه.

تحديث: أيضًا من الخطأ الشائع استخدام عمليات الرضا الخلفية غير المقيدة في المسار الحرفي (حاول طباعته لمعرفة ما إذا كان يتم تفسيره بشكل صحيح).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top