PythonApplication1.py
C# 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% を展開します。また、起動情報を使用して、その特定のフォルダーでプロセスを開始するように指示する必要があります。それ以外の場合、現在の作業フォルダーはアプリケーションと同じフォルダーになると思いますが、それを行う方法がわかりません。それが問題の理由である場合は、助けが必要です.