关于使用c#调用python脚本文件,脚本文件需要传递参数
2014-01-02 10:49
971 查看
最近工作中需要干这个事,网上搜了搜资料,改了改,基本是这样
建立一个控制台应用程序:
比如 加入我在命令行直接调用python脚本,命令为
y安装python后,添加环境变量,path下面,加入路径。
feng.py是需要执行的python脚本,command是其命令,-f 是参数 xx.os是需要操作对应的文件
建立一个控制台应用程序:
比如 加入我在命令行直接调用python脚本,命令为
y安装python后,添加环境变量,path下面,加入路径。
feng.py是需要执行的python脚本,command是其命令,-f 是参数 xx.os是需要操作对应的文件
static void Main(string[] args) { string[] strArr;//参数列表,需要传递的参数,这里只需要传递command -f xx.os 注意路径的正确 string sArguments = @"feng.py";//这里是python的文件名字 RunPythonScript(sArguments, "-u", strArr);//运行脚本文件 } public static void RunPythonScript(string sArgName, string args = "",params string[] teps) { Process p = new Process(); string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + sArgName;// 获得python文件的绝对路径,如果是绝对路径,尽量保证 //同一级目录名称没有空格 比如 "C://xx//ni hao//; //这里的ni hao之间有空格,会引发错误,得不到相应结果。 string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + sArgName;// 获得python文件的相对路径 string sArguments = path; if (tep.Length > 0) { foreach (string sigstr in teps) { sArguments += " " + sigstr;//传递参数 } } //下面为启动一个进程来执行脚本文件设置参数 p.StartInfo.FileName = @"python26.exe"; //注意路径,相对路径在Debug目录下,这里是安装python26.exe p.StartInfo.Arguments = sArguments;//这样sArguments就变成了feng.py command -f xx.os p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true; p.Start();//启动进程 p.BeginOutputReadLine(); p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived); Console.ReadLine(); p.WaitForExit(); } //输出打印的信息 static void p_OutputDataReceived(object sender, DataReceivedEventArgs e) { if (!string.IsNullOrEmpty(e.Data)) { AppendText(e.Data + Environment.NewLine); } } public delegate void AppendTextCallback(string text); public static void AppendText(string text) { Console.WriteLine(text); } }
相关文章推荐
- 使用C#调用Python脚本,带参数列表 z
- C#调用Python脚本并使用Python的第三方模块
- C#如何调用批处理文件 C#如何向批处理文件传递多个参数
- 在C#中调用python脚本,并使用python第三方arcpy模块
- C#调用Python脚本并使用Python的第三方模块
- [C#]如何将类放置于不同的文件中在同一个解决方案中调用?(不同解决方案的需要使用类库ClassLibrary)
- [C#]如何将类放置于不同的文件中在同一个解决方案中调用?(不同解决方案的需要使用类库ClassLibrary)
- java调用python脚本并向python脚本传递参数
- C#关于静态函数与普通函数之间的调用问题,以及可变参数的使用
- 【脚本语言系列】关于Python结构化文本文件处理配置文件.ini,你需要知道的事
- C语言学习4: 函数返回值与传入参数,关于函数值传递和类型隐性转换,变量不同的作用域,static变量,多文件编译例如两个C文件,显示函数调用语句跳转,递归,斐波那契数列,多文件编译相同变量的问题。
- C++ 调用Python文件方法传递字典参数并接收返回值
- C#调用Python脚本并使用Python的第三方模块
- python 获取脚本传递参数 及参数个数 检查文件 变量 是否存在 退出脚本
- 如何用C#程序调用bat文件的同时向bat文件传递类似字符串这样的参数?
- java调用Python脚本文件的同时,并向其中传入参数
- Unity使用C#调用C++dll传递指针参数、接收指针返回值
- 【脚本语言系列】关于Python远程调用,你需要知道的事
- 【脚本语言系列】关于Python基础知识文件操作,你需要知道的事
- 【脚本语言系列】关于Python结构化二进制文件处理Microsoft Excel,你需要知道的事