我PythonApplication1.py
进入了 C# Windows 窗体应用程序的源代码。在特定条件下,我以这种方式将其写入 Program Data 文件夹:
File.WriteAllBytes(@"%ProgramData%\\Folder\\PythonApplication1.py", Resources.PythonApplication1);
然后在特定条件下 C# 从程序数据文件夹运行 Python 应用程序,这样:
Process.Start(@"%ProgramData%\\Folder\\PythonApplication1.py");
在 Python 代码方面,我得到了第二件事,它将一些数据写入文本文档,该文档位于相同的路径中,但它的创建发生在 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 中,只是通过Process.Start("PythonApplication1.py");
,或者如果我使用 doc.txt 在路径内运行 Python 代码%ProgramData%\Folder
,只是手动。它直接创建并写入文件,一切都是正确的。
否则,如果Process.Start(@"%ProgramData%\\Folder\\PythonApplication1.py");
我得到第二个结果,它不会将数据写入 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);
所以似乎我在这里需要两件事。展开搜索环境变量%ProgramData%。并且还需要使用启动信息来告诉进程在该特定文件夹上启动。否则,当前工作文件夹将与我猜的 application 文件夹相同,但不知道该怎么做,如果是问题的原因,需要你的帮助。