如何通过 Python 运行 C# 控制台应用程序?
How to run C# Console Applications via Python?
我使用 Visual Studio 创建了以下 C# 控制台应用程序(.NET Core 3.1):
using System;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
//Check if args contains anything
if (args.Length > 0)
{
Console.WriteLine("args = " + args[0]);
} else
{
Console.WriteLine("args is empty");
}
//Prevent the application from closing itself without user input
string waiter = Console.ReadLine();
}
}
}
我能够通过 cmd.exe 使用一个参数成功执行应用程序:
CMD Input and Output
现在我想通过 Python 运行 这个程序的一个参数。我已阅读 How to execute a program or call a system command? 并尝试实施它。但是,应用程序似乎没有正常 运行。
我通过 Jupyter notebook 使用的 python 代码:
import subprocess
path = "C:/Users/duykh/source/repos/ConsoleApp2/ConsoleApp2/bin/Release/netcoreapp3.1/ConsoleApp2.exe"
subprocess.Popen(path) //#Also tried with .call and .run
//#subprocess.Popen([path, "argumentexample"]) doesn't work either
输出:
<subprocess.Popen at 0x2bcaeba49a0>
我的问题是:
为什么它不是 运行(正确地),我如何使用一个参数正确地 运行 这个应用程序?
我已经回答了我自己的问题。一言以蔽之:我很笨。
Jupyter Notebook 运行在后台运行,应用程序 运行 在后台运行。这就是它没有打开新提示的原因。
subprocess.Popen([path, "argument example"])
似乎适用于 运行 将参数作为输入的控制台应用程序。
我使用 Visual Studio 创建了以下 C# 控制台应用程序(.NET Core 3.1):
using System;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
//Check if args contains anything
if (args.Length > 0)
{
Console.WriteLine("args = " + args[0]);
} else
{
Console.WriteLine("args is empty");
}
//Prevent the application from closing itself without user input
string waiter = Console.ReadLine();
}
}
}
我能够通过 cmd.exe 使用一个参数成功执行应用程序: CMD Input and Output
现在我想通过 Python 运行 这个程序的一个参数。我已阅读 How to execute a program or call a system command? 并尝试实施它。但是,应用程序似乎没有正常 运行。
我通过 Jupyter notebook 使用的 python 代码:
import subprocess
path = "C:/Users/duykh/source/repos/ConsoleApp2/ConsoleApp2/bin/Release/netcoreapp3.1/ConsoleApp2.exe"
subprocess.Popen(path) //#Also tried with .call and .run
//#subprocess.Popen([path, "argumentexample"]) doesn't work either
输出:
<subprocess.Popen at 0x2bcaeba49a0>
我的问题是:
为什么它不是 运行(正确地),我如何使用一个参数正确地 运行 这个应用程序?
我已经回答了我自己的问题。一言以蔽之:我很笨。
Jupyter Notebook 运行在后台运行,应用程序 运行 在后台运行。这就是它没有打开新提示的原因。
subprocess.Popen([path, "argument example"])
似乎适用于 运行 将参数作为输入的控制台应用程序。