2014-03-28 163 views
0

我使用了搜索引擎。我找不到我想要的東西,而且我在編程方面也不太好。我有一個使用hashlib和M2Crypto的.py腳本,當我使用鐵蟒從c#運行程序時,它說即沒有模塊命名爲hashlib。我找不到將hashlib導入到c#或ironpython的方法,即使我搜索了所有的網絡,我也嘗試了下面的代碼,但它似乎並不工作。請你幫忙,謝謝。從C啓動python腳本的方法#

Process p = new Process(); // create process (i.e., the python program 
    GetShortPathName(decdbpath, shortPath, shortPath.Capacity); 
    GetShortPathName(db, shortPath2, shortPath2.Capacity); 
    p.StartInfo.FileName = "C:\\Python27\\python.exe"; 
    p.StartInfo.UseShellExecute = false; 
    p.StartInfo.Arguments = a+"\\pycode.py" + shortPath + " " + 
          txt_entermail.Text + " >" + db; 
    p.Start(); // start the process (the python program) 
    p.WaitForExit(); 
    MessageBox.Show("Decryption Done"); 

終於讓我找到了問題,路徑PY腳本中包含空格,我解決了問題,但現在python腳本是拒絕接受的參數?感謝

string format = string.Format(shortPath + "\\pycode.py"+" "+shortPath2.ToString() + " " + txt_entermail.Text + " > " + shortPath3.ToString()); 

這是結果:

使用C:\用戶\ WIN7 \齊亞德\ MOBILE〜1 \ DBEXPL〜1 \ WINDOW〜1 \ BIN \調試\ pycode.py參數1參數2>參數3

+0

此線程是否對您有幫助? http://stackoverflow.com/questions/11779143/run-a-python-script-from-c-sharp –

+0

我看到它,它沒有幫助:( –

+0

我注意到,p.StartInfo.RedirectStandardOutput = true;沒有設置爲true。你嘗試過嗎? –

回答

0

試一下,告訴我:

p.Arguments = string.Format("{0} {1}", cmd, args); 
    p.UseShellExecute = false; 
    p.RedirectStandardOutput = true; 
    using(Process process = Process.Start(p)) 
    { 
     using(StreamReader reader = process.StandardOutput) 
     { 
      string result = reader.ReadToEnd(); 
      Console.Write(result); 
     } 
    } 
+0

根本沒有幫助 –

+0

和reader.readtoend();的結果是空的,就像它沒有讀取腳本idk –

+0

你確定,你的py代碼工作正常嗎?可能你的錯誤來自p.Arguments上的連接嗎? – JossVAMOS

0

我相信你的問題是在你的Python腳本,而不是在你的C#。見Unable to import "hashlib"

+0

my python腳本工作正常,我試圖使用它外部 –

+0

好吧,你可能想確保hashlib是在路徑。這是一個答案,說到這一點:https://stackoverflow.com/questions/1371994/importing-external-模塊in-ironpython –

+0

另一個直接與hashlib和ironpython有關的問題在這裏:https://stackoverflow.com/questions/6855211/can-i-use-all-standard-python-libraries-with-ironpython-or –