我试图制作使用hunpos tagger的C#应用程序。 运行hunpos-tag.exe需要三个输入参数:model,inputFile,outputFile
在cmd中它看起来像这样:
hunpos-tag.exe model <inputFile >outputFile
如果我只是用模型运行它会写一些东西然后等待结束命令。当我尝试使用标准重定向时,我得到一个异常(我解决了这个代码被一个支架关闭了我现在刚刚获得或者方案)或者我得到了运行带有模型参数的标记器的结果。这是代码:
string inputFilePath = path + "\\CopyFolder\\rr";
string pathToExe = path + "\\CopyFolder\\hunpos-tag.exe";
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = pathToExe,
UseShellExecute = false,
RedirectStandardInput = true,
WorkingDirectory = Directory.GetDirectoryRoot(pathToExe),
Arguments = path + "\\CopyFolder\\model.hunpos.mte5.defnpout",
};
try
{
Process _proc = new Process();
_proc.StartInfo.FileName = pathToExe;
_proc.StartInfo.UseShellExecute = false;
_proc.StartInfo.RedirectStandardInput = true;
_proc.StartInfo.Arguments = path + "\\CopyFolder\\model.hunpos.mte5.defnpout";
//Magic goes here
_proc.Start();
_proc.WaitForExit();
}
catch (Exception e)
{
Console.WriteLine(e);
}
任何想法如何在开始我的流程之前重定向输入?
答案 0 :(得分:0)
不仅需要将RedirectStandardInput
设置为true
,还需要使用输入流来编写所需的文本:
_proc.StandardInput.WriteLine("The text you want to write");
答案 1 :(得分:0)
如果您稍后设置信息,则不需要ProcessStartInfo。摆脱它。似乎你已经做了你想做的事。只是创建流程对象不会启动流程,Process.Start会这样做。只需创建一个新的StreamWriter并将其传递给Process.StandardInput(我认为这是对的,它可能是其他的东西)