سؤال

أحاول استخدام Python لتشغيل برنامج.

from subprocess import Popen 
sa_proc = Popen(['C:\\sa\\sa.exe','--?'])

تشغيل هذا Snappit صغير يعطي الخطأ:

WindowsError: [خطأ 2] لا يمكن للنظام العثور على الملف المحدد

يوجد البرنامج ولدي نسخ ولصق مباشرة من المستكشف المسار المطلق إلى EXE. لقد جربت أشياء أخرى ووجدت أنه إذا وضعت EXE في المجلد المصدر باستخدام البرنامج النصي Python واستخدامه "./sa.exe" ثم يعمل. الشيء الوحيد الذي يمكنني التفكير فيه هو أنني أقوم بتشغيل البرنامج النصي Python (و Python) من قسم منفصل (F :).

أيه أفكار؟ شكرا

هل كانت مفيدة؟

المحلول

كما المستندات قل، "على Windows: يستخدم فئة Popen CreateProcess () لتنفيذ برنامج الطفل، الذي يعمل على السلاسل. إذا كان Args تسلسلا، فسيتم تحويله إلى سلسلة باستخدام طريقة List2cmdline ().". ربما هذه الطريقة تعبث الأشياء، فلماذا لا تحاول النهج الأكثر بساطة من:

sa_proc = Popen('C:\\sa\\sa.exe --?')

إذا كان هذا لا يزال يفشل، ثم: ما os.environ['COMSPEC'] فقط قبل أن تجرب هذا؟ ماذا يحدث إذا أضفت , shell=True ل Popenالحجج؟

يحرر: اتضح أن تكون على ما يبدو أن تكون حالة من سوء التشكيل البسيط، كما هو الحال في الواقع البرنامج هو في الواقع مرتين SPAMASSASSIN - Double S مرتين - وما هو المرجع الذي كان يكتب هو Spamassasin - واحد مزدوج واحد ولكن واحد واحد في الثانية زمن.

نصائح أخرى

قد لا يكون لديك إذن لتنفيذ C: SA Sa.exe. هل حاولت تشغيل البرنامج يدويا؟

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