2013-08-24 51 views
1

我已經成功地稱爲python腳本從我的窗口按鈕單擊窗體應用程序用C#與下面的代碼:我如何通過C#變量到Python腳本從Windows窗體應用程序

private void login_Click(object sender, EventArgs e) 
    { 
     System.Diagnostics.Process.Start("C:\\Python27\\Scripts\\path\\file.py"); 
    } 

我現在想要將一個變量傳遞給python腳本。我試圖把它當作參數傳遞給無果(在這樣的PHP作品):

private void login_Click(object sender, EventArgs e) 
    { 
     System.Diagnostics.Process.Start("C:\\Python27\\Scripts\\path\\file.py myVariable"); 
    } 

我收到任何錯誤在Visual Studio編譯器的代碼,但是當我點擊該按鈕來啓動python腳本我收到一條「Win32異常是未處理 - 系統找不到指定的文件」的錯誤

我也試過這無濟於事 - How do I run a Python script from C#?

回答

2

你需要使用一個起始的信息,如下所示。 http://www.dotnetperls.com/process-start

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = "C:\\Python27\\Scripts\\path\\file.py"; 
startInfo.Arguments = "myvariable"; 

try 
{ 
    using (Process exeProcess = Process.Start(startInfo)) 
    { 
     //dostuff 
     exeProcess.WaitForExit(); 
    } 
} 
catch 
{ 
    //log 
    throw; 
} 

通過的Process.Start返回的過程中不受管理,應該在使用中被引用。

+0

工作就像一個魅力!不勝感激。 –

2

爲了運行python腳本,您需要將腳本路徑傳遞給python解釋器。現在你要求Windows執行python腳本文件。這不是一個可執行文件,因此windows將無法啓動它。

此外,您調用啓動的方式使Windows試圖啓動文件"file.py myVariable"。你想要的是運行"file.py"並通過"myVariable"作爲參數。試試下面的代碼,而不是

Process.Start(
    @"c:\path\to\python.exe", 
    @"C:\Python27\Scripts\path\file.py myVariable"); 

編輯

它從你的意見,你想傳遞變量myVariable的電流值,而不是字面看起來。如果是這樣,然後嘗試以下內容

string arg = string.Format(@"C:\Python27\Scripts\path\file.py {0}", myVariable); 
Process.Start(
    @"c:\path\to\python.exe", 
    arg); 
+0

我無法通過這種方式傳遞變量,它確實啓動了python腳本,但變量輸出只是「myVariable」而不是它本來的值。可能是我的結局。感謝您的迴應。 +1 –

+1

@GarettCosco更新以獲得'myVariable'的值與文字 – JaredPar

+0

謝謝,效果很好。 –

相關問題