C# 通过C调用brill标记器#
我们希望使用brill tagger,这样只要点击一个按钮,它就会将Input.txt标记为output.txt。因此,我们创建了一个新的VisualStudio项目并放置了一个按钮。在按钮点击事件中,我们编写了以下代码。没有错误,我们可以看到命令提示符被调用。但是没有创建输出文件。代码如下。你能指导我们吗C# 通过C调用brill标记器#,c#,tagging,C#,Tagging,我们希望使用brill tagger,这样只要点击一个按钮,它就会将Input.txt标记为output.txt。因此,我们创建了一个新的VisualStudio项目并放置了一个按钮。在按钮点击事件中,我们编写了以下代码。没有错误,我们可以看到命令提示符被调用。但是没有创建输出文件。代码如下。你能指导我们吗 private void button1_Click(object sender, EventArgs e) { ProcessStartInfo brillStartI
private void button1_Click(object sender, EventArgs e)
{
ProcessStartInfo brillStartInfo = new ProcessStartInfo(@"C:\Users\toshal\Documents\Visual Studio 2008\Projects\brill tagger\bin\brill.exe");
brillStartInfo.Arguments = "/C brill.exe LEXICON.BROWN Input.txt BIGRAMS LEXICALRULEFILE.BROWN CONTEXTUALRULEFILE.BROWN > output.txt";
brillStartInfo.UseShellExecute = false;
brillStartInfo.RedirectStandardOutput = true;
brillStartInfo.RedirectStandardError = true;
brillStartInfo.CreateNoWindow = false;
Process brill = new Process();
brill.StartInfo = brillStartInfo;
brill.Start();
string output = brill.StandardOutput.ReadToEnd();
brill.WaitForExit();
}
在我看来,文件是创建的,只是不在您期望的目录中。原因是,您启动cmd,默认工作目录是
C:\Windows\system32
,只需输入输出文件的完整路径,就可以工作或设置进程.WorkingDirectory
属性
此外,如果要将程序的输出重定向到C#app,则不应在命令行中重定向它
要么将输出重定向到带有“outputpath”的文件,要么将输出重定向到C#app,然后删除输出,这两种方法都无法实现。它们是编写代码的方式,我认为应该是这样的:
private void button1_Click(object sender, EventArgs e)
{
ProcessStartInfo brillStartInfo = new ProcessStartInfo("cmd");
brillStartInfo.Arguments = "/C brill.exe LEXICON.BROWN Input.txt BIGRAMS LEXICALRULEFILE.BROWN CONTEXTUALRULEFILE.BROWN > output.txt";
brillStartInfo.WorkingDirectory = @"C:\Users\toshal\Documents\Visual Studio 2008\Projects\brill tagger\bin\";
brillStartInfo.UseShellExecute = false;
brillStartInfo.CreateNoWindow = false;
Process brill = new Process();
brill.StartInfo = brillStartInfo;
brill.Start();
brill.WaitForExit();
}
重要更改:要执行的可执行文件是
cmd
,您需要将工作目录设置为brill.exe目录,以便能够在参数中使用它,而无需指定路径。程序的输出被重定向到文件output.txt
。如果让程序向控制台生成输出,则string output=brill.StandardOutput.ReadToEnd()代码>将返回标记结果。否则,您必须明确地打开并读取文件。@Toshal Mokadam,在提问之前,请先尝试接受前面的一些答案。您的意思是通过cmd命令或C#重定向代码创建输出?如果是后者,则表示您没有使用输出
字符串执行任何操作。