C#中通過Process運行Python腳本

<pre name="code" class="csharp">
<pre name="code" class="csharp"><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="csharp">public void set_Python_Argv()
        {
            IFeatureLayer pFeatureLayer = (IFeatureLayer)m_pLayer;
            IDataLayer dl = (IDataLayer)m_pLayer;
            IWorkspaceName ws = ((IDatasetName)(dl.DataSourceName)).WorkspaceName;
            string path = ws.PathName;

            //設置腳本參數
            string sArguments = @"shape_analyze.py";<span style="white-space:pre">	</span>//這裏是python的文件名字
            string file_name = m_pLayer.Name;<span style="white-space:pre">		</span>//要被傳入的文件名,不含後綴
            RunPythonScript(sArguments, path, file_name);
        }

        public static void RunPythonScript(string sArgName, string ws_name, string file_name)
        {//調用腳本
            string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + sArgName;// 獲得python文件的絕對路徑
            string sArguments = path;
            if (ws_name.Length > 0 || file_name.Length > 0)
            {
                sArguments =sArguments + " " + ws_name + " " + file_name;//傳遞參數
            }
            //設置進程並運行
            Process p = new Process();
            p.StartInfo.FileName = "F:\\ArcGIS10.2\\python.exe";
            p.StartInfo.Arguments = sArguments;
            p.Start();
            p.WaitForExit();
        }



<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">以上代碼是C#+Arc Engine項目的一部分,傳入一個.shp(圖層文件)到shape_analyze.py,以命令行參數的形式傳遞</span>

ws_name = str(sys.argv[1])<span style="white-space:pre">		</span>//接受參數
file_name = str(sys.argv[2])
fc = ws_name + "\\" + file_name + ".shp"//組合出完整的文件名


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章