之前曾在不同程度上提出过这样的问题,但我觉得还没有以简明的方式回答,因此我再次提出。
我想在Python中运行脚本。可以说是这样的:
if __name__ == '__main__':
with open(sys.argv[1], 'r') as f:
s = f.read()
print s
它获取文件位置,读取它,然后打印其内容。没那么复杂。
好吧,那我该如何在C#中运行它呢?
这就是我现在所拥有的:
private void run_cmd(string cmd, string args)
{
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = cmd;
start.Arguments = args;
start.UseShellExecute = false;
start.RedirectStandardOutput = true;
using (Process process = Process.Start(start))
{
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Console.Write(result);
}
}
}
当我传递code.py
位置as cmd
和filename
位置as args
无效时。有人告诉我,我应该通过python.exe
的cmd
,然后code.py filename
作为args
。
我已经寻找了一段时间,只能找到建议使用IronPython或类似工具的人。但是必须有一种从C#调用Python脚本的方法。
一些澄清:
我需要从C#运行它,我需要捕获输出,并且不能使用IronPython或其他任何东西。无论你有什么技巧,都可以。
PS:我正在运行的实际Python代码要比这复杂得多,它返回我在C#中所需的输出,并且C#代码将不断调用Python。
假设这是我的代码:
private void get_vals()
{
for (int i = 0; i < 100; i++)
{
run_cmd("code.py", i);
}
}
它不起作用的原因是因为你有UseShellExecute = false
。
如果不使用外壳程序,则必须以方式提供python可执行文件的完整路径FileName,并构建Arguments
字符串以提供脚本和要读取的文件。
另请注意,RedirectStandardOutput
除非你不能这样做UseShellExecute = false
。
我不太确定应如何为python格式化参数字符串,但你将需要以下内容:
private void run_cmd(string cmd, string args)
{
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = "my/full/path/to/python.exe";
start.Arguments = string.Format("{0} {1}", cmd, args);
start.UseShellExecute = false;
start.RedirectStandardOutput = true;
using(Process process = Process.Start(start))
{
using(StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Console.Write(result);
}
}
}
问题内容: Bash脚本非常有用,可以节省很多编程时间。那么,如何在C ++程序中启动bash脚本呢?另外,如果您知道如何使用户成为超级用户,那也会很好。谢谢! 问题答案: 使用功能。
我写了一个程序在IDLE令牌化文本文件,它开始令牌349文本文件!我怎样才能阻止它?如何停止正在运行的Python程序?
问题内容: 我想从PHP运行Python脚本。该脚本的语法很好,当我从命令行运行它时,它会在它旁边生成一个图像文件。当我从命令行运行PHP文件(包含Python exec)时,它将生成一个图像文件。很好。问题是:当我使用浏览器并运行PHP时,它不会生成任何图像文件。我使用的是Xubuntu OS。 问题答案: 问题是matplotlib后端设置。我更改为“ Agg”,并且plot函数正常运行。
我想从python脚本内部运行下面的bash脚本。 我的python脚本/函数如下所示 但是,我收到以下错误 - 我正在使用集群,我的系统规格如下 - 如果我遗漏了什么,请告诉我。我的基本问题是如何从给定的python脚本运行另一个python script,特别是当我们需要激活和停用虚拟环境时,因为由于一些依赖冲突,父python script和子python cript需要两个不同的虚拟环境。
如何从gradle运行另一个gradle脚本。我有多个gradle脚本在
问题内容: 我能运行Linux命令状或从Java没有问题,但不能得到执行的Python脚本。 这是我的代码: 什么都没有发生。它到达了SEND,但之后就停止了… 我正在尝试执行需要root权限的脚本,因为它使用串行端口。另外,我还必须传递带有一些参数的字符串(数据包)。 问题答案: 您不能像在示例中那样在内部使用PIPE 。PIPE是shell的一部分。 你可以做 将命令放入shell脚本并使用或