0

PythonApplication1.pyC# Windows フォーム アプリケーションのソースに入りました。特定の条件で、次のように Program Data フォルダーに書き込みます。

File.WriteAllBytes(@"%ProgramData%\\Folder\\PythonApplication1.py", Resources.PythonApplication1);

次に、特定の条件で、C# はプログラム データ フォルダーから Python アプリケーションを次のように実行します。

Process.Start(@"%ProgramData%\\Folder\\PythonApplication1.py");

Pythonコードの側で2番目に得たのは、同じパスにあるテキストドキュメントにデータを書き込むことですが、その作成はPython自体で行われますが、C#コードから行うことができます。 :

path = (@"%ProgramData%\Folder\doc.txt")

ただし、Python コードは、同じプログラム データ パスでこのファイルに書き込む必要があります。

data = open (r'doc.txt', 'w')

両方がそこにあるので、ちょうど同じ場所に書く:

with open(r'doc.txt') as my_file:   

問題は、上記のようにこの python コードを実行すると、次のようになることです。

 Process.Start(@"%ProgramData%\\Folder\\PythonApplication1.py");

ディレクトリではなく%ProgramData%、C# .exe でデバッグ フォルダーに配置されている場合、またはdoc.txt を使用してパスProcess.Start("PythonApplication1.py");内で Python コードを手動で実行した場合は、2 つの間違った処理が行われます。%ProgramData%\Folderファイルを作成して直接書き込みますが、すべて正しいです。

それ以外の場合Process.Start(@"%ProgramData%\\Folder\\PythonApplication1.py");、2番目の結果が得られた場合、データはdoc.txtに書き込まれ%ProgramData%\Folderず、PythonコードはC#.exeを使用してデバッグフォルダーのプログラムデータフォルダーからデータを作成します。

問題は、python コードを作成して、C# アプリケーションの "%ProgramData%\Folder" パスにある doc.txt に書き込む方法です。

PythonApplication1.py が ProgramData 内に存在する場合、次のようになります。

File.WriteAllBytes(@"%ProgramData%\\TAOZ\\PythonApplication1.py", Resources.PythonApplication1);

また、手動で実行した場合、テキスト ドキュメントを作成して書き込みます。 with を実行する必要がありますが、実行する必要はありませProcess.Startん。

また、スター情報を使用しようとしましたが、これが正しいかどうかはわかりませんが、とにかく同じ結果が得られました:

    ProcessStartInfo startInfo = new ProcessStartInfo(@"%ProgramData%\\folder\\PythonApplication1.py");
    startInfo.WindowStyle = ProcessWindowStyle.Minimized;
    Process.Start(startInfo);

ここで2つのことが必要なようです。検索環境変数 %ProgramData% を展開します。また、起動情報を使用して、その特定のフォルダーでプロセスを開始するように指示する必要があります。それ以外の場合、現在の作業フォルダーはアプリケーションと同じフォルダーになると思いますが、それを行う方法がわかりません。それが問題の理由である場合は、助けが必要です.

4

1 に答える 1

0

これは Python プログラムなので、Python EXE を指定する必要があります。pythonpath 環境変数があると仮定すると、これは機能するはずです。

ProcessStartInfo startInfo = new ProcessStartInfo(Environment.ExpandEnvironmentVariables(@"%PYTHONPATH%\python.exe"), Environment.ExpandEnvironmentVariables(@"%ProgramData%\folder\PythonApplication1.py"));
startInfo.WorkingDirectory = Environment.ExpandEnvironmentVariables(@"%ProgramData%\folder\");
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
Process.Start(startInfo);
于 2016-12-06T03:57:33.617 に答える