2

次のコードを使用して、C# で記述された Windows フォーム アプリケーションのボタン クリックから Python スクリプトを正常に呼び出しました。

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 例外が処理されませんでした - 指定されたファイルが見つかりません」というエラーが表示されます。

私もこれを無駄にしようとしました - C#からPythonスクリプトを実行するにはどうすればよいですか?

4

2 に答える 2

3

ここに示すように、開始情報を使用する必要があります。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 によって返されるプロセスは管理されていないため、using 内で参照する必要があります。

于 2013-08-24T18:12:01.300 に答える
2

Python スクリプトを実行するには、スクリプト パスを Python インタープリターに渡す必要があります。現在、Windows に python スクリプト ファイルを実行するように要求しています。これは実行可能ファイルではないため、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);
于 2013-08-24T18:12:24.950 に答える