2015-01-14 2 views
0

Я написал файл .exe на C#, и он отлично работает, если я запускаю его вручную вручную (дважды щелкнув), но каждый раз, когда я пытался открыть его с помощью python.Ошибка запуска файла python

import os 
os.system('"D:\\XX\MyFile.exe"') 

Я также попытался это:...

import subprocess 

exefile = 'D:\\XX\\MyFile.exe' 
subprocess.call([exefile]) 

Программа происшествий сразу говорит "MyFile.exe перестала работать программа вызвала программу прекращению работы закройте программу ».

Теперь, что меня озадачивает, если я запустил его вручную, но при попытке запустить его через Python это не удастся.

Приложение C# - это просто Updater, который я написал для проверки обновлений для моих pythoncripts. Он имеет .dll, который содержит процедуры обновления и формы, которые загружают (.dat) файл для информации.

Есть ли что-то, что я пропустил?

EDIT:

После некоторых изменений и диагноза, мой EXEFILE теперь начинается, но я понимаю, если он был запущен на Python, то ех не мог сделать следующую функцию в моей C# Заявке.

private UpdateSaveFile DecodeSaveFile(string LocalUpdateFile) 
    { 
     FileStream localFileStream = null; 
     BinaryFormatter decoder = null; 
     try 
     { 
      localFileStream = File.Open(LocalUpdateFile, FileMode.Open, FileAccess.Read); 
      decoder = new BinaryFormatter(); 
      return (UpdateSaveFile)decoder.Deserialize(localFileStream); 
     } 
     catch (Exception e) 
     { 
      throw new InvalidDataException("The local update info file is corrupt!", e); 
     } 
     finally 
     { 
      if (localFileStream != null) 
       localFileStream.Dispose(); 
     } 

    } 

Теперь всякий раз, когда я бег EXEFILE из питона, он бросает мне «Локальная информация обновления файл поврежден». Но если я запускаю exefile вручную (без python)/cmd, он работает отлично.

У кого-нибудь есть идеи? Это из-за прав администратора? Есть ли у python exe права администратора?

+2

Любая причина, по которой вы делаете 'exefile = '% s'% 'D: \\ XX \\ MyFile.exe'' вместо' exefile =' D: \\ XX \\ MyFile.exe''? –

+0

Имея четыре кавычки в первом блоке кода, мне кажется странным. Вы пробовали 'os.system (« D: \\ XX \ MyFile.exe »)' вместо этого? – Kevin

+1

Я думаю, что 'os.system (r'D: \ XX \ MyFile.exe ')' лучше –

ответ

0

Хорошо, я нашел преступника. Поэтому у меня есть строка вроде этого: она должна посмотреть на текущий каталог для файла «Updates.dat». Однако по некоторым причинам, если я запускаю exe через Python. Он не смог распознать «. \», Но если я его вручную запустил, все в порядке. Это меня действительно озадачивает.

const String LocalUpdateFile = @".\Updates.dat"; 

Итак, вместо этого, если я перейду на это. Python запускает exe отлично.

const String LocalUpdateFile = @"D:\XX\Updates.dat"; 

Но мне действительно интересно, почему это происходит.

Спасибо!

Смежные вопросы