在C#下运行Python:IronPython和Pythonnet

news/2024/11/30 9:37:15/

亿牛云代理

在C#下运行Python可能有不同的原因。其中一些原因包括:

  1. 使用C#应用程序中不可用的特定Python功能或库。
  2. 结合Python的简单性和表现力以及C#的性能和稳健性,完成不同任务。
  3. 与基于Python的系统或服务进行集成。

为实现Python和C#之间的互操作性,有两个库可供选择:IronPython和pythonnet:

  1. IronPython是在.NET Framework上运行的Python实现,可以利用.NET库和对象。使用IronPython,可以编写能够充分利用.NET功能和性能的Python代码。然而,IronPython可能不支持一些特定于CPython的Python功能或库。
  2. Pythonnet是一个允许在.NET应用程序中嵌入Python的包,并且反之亦然。它允许使用C#中的任何Python解释器和库。然而,Pythonnet可能会导致一些性能开销和兼容性问题。

根据具体的用例和要求,选择适合的库将提供更好的灵活性和互操作性。
下面使用 c#和IronPython 写一段获取天气的热门旅游城市的代码,首先是c#代码部分:

using IronPython.Hosting;
using IronPython.Runtime;
using Microsoft.Scripting.Hosting;
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;namespace WeatherInfo
{class Program{static void Main(string[] args){// 亿牛云 爬虫代理加强版 // 设置爬虫代理IP的主机、端口、用户名和密码string proxyHost = "www.16yun.cn";int proxyPort = 31000;string proxyUsername = "16YUN";string proxyPassword = "16IP";// 创建Python脚本引擎var engine = Python.CreateEngine();var scope = engine.CreateScope();// 设置代理IPengine.GetSysModule().SetVariable("proxy_host", proxyHost);engine.GetSysModule().SetVariable("proxy_port", proxyPort);engine.GetSysModule().SetVariable("proxy_username", proxyUsername);engine.GetSysModule().SetVariable("proxy_password", proxyPassword);// 加载并执行Python脚本engine.ExecuteFile("get_weather.py", scope);// 获取结果var cities = (List<string>)scope.GetVariable("cities");var temperatures = (List<string>)scope.GetVariable("temperatures");var times = (List<string>)scope.GetVariable("times");// 创建XML文档XmlDocument xmlDoc = new XmlDocument();XmlElement root = xmlDoc.CreateElement("WeatherData");xmlDoc.AppendChild(root);for (int i = 0; i < cities.Count; i++){XmlElement cityElement = xmlDoc.CreateElement("City");cityElement.SetAttribute("Name", cities[i]);XmlElement temperatureElement = xmlDoc.CreateElement("Temperature");temperatureElement.InnerText = temperatures[i];XmlElement timeElement = xmlDoc.CreateElement("Time");timeElement.InnerText = times[i];cityElement.AppendChild(temperatureElement);cityElement.AppendChild(timeElement);root.AppendChild(cityElement);}// 保存XML文件xmlDoc.Save("weather_data.xml");Console.WriteLine("Weather information saved to weather_data.xml.");}}
}

请将上述代码保存为 Program.cs 文件,并创建一个名为 get_weather.py 的Python脚本文件,脚本内容如下:

import requests
from bs4 import BeautifulSoup# 亿牛云 爬虫代理加强版 代理IP设置
proxy = {'http': 'http://%(proxy_username)s:%(proxy_password)s@%(proxy_host)s:%(proxy_port)s/' % {'proxy_username': proxy_username,'proxy_password': proxy_password,'proxy_host': proxy_host,'proxy_port': proxy_port},'https': 'http://%(proxy_username)s:%(proxy_password)s@%(proxy_host)s:%(proxy_port)s/' % {'proxy_username': proxy_username,'proxy_password': proxy_password,'proxy_host': proxy_host,'proxy_port': proxy_port}
}# 使用百度搜索获取天气信息
def get_weather_info(city):search_url = 'https://www.baidu.com/s'params = {'wd': city + '天气','rsv_spt': '1','rsv_iqid': '0xc2442a04000970

上面的代码是使用C#和IronPython编写的一个简单的程序,旨在通过百度搜索获取中国旅游城市的天气信息,并将地区、温度信息和时间进行统计,最后将结果存储到XML文件中。


http://www.ppmy.cn/news/568899.html

相关文章

【运维】服务器系统安装 -- 服务器版

目录 一、环境 二、ubuntu 三、启动u盘制作 Stage 1&#xff1a;下载balena&#xff0c;制作U盘启动工具 Stage 2&#xff1a;下载Ubuntu 系统镜像&#xff08;参考上一节&#xff1a;Ubuntu 22.04.2 LTS &#xff09; Stage 3&#xff1a;将镜像写入到U盘 四、设置开启…

神舟计算机硬件开发简历,【神舟电脑研发工程师面试】面试是走过场,很简单-看准网...

首先&#xff0c;之前在网上查了很多相关信息&#xff0c;负面评论较多&#xff0c;但还是奔着“神舟电脑”这个老牌子去参加了宣讲会&#xff0c;还记得小时候总在央视看到神舟的广告&#xff0c;在记忆里植入了一种靠谱的形象。 11月的哈尔滨零下十七度&#xff0c;乘车去哈工…

神舟计算机硬件开发简历,【神舟电脑研发类面试】很水-看准网

首先&#xff0c;之前在网上查了很多相关信息&#xff0c;负面评论较多&#xff0c;但还是奔着“神舟电脑”这个老牌子去参加了宣讲会&#xff0c;还记得小时候总在央视看到神舟的广告&#xff0c;在记忆里植入了一种靠谱的形象。 11月的哈尔滨零下十七度&#xff0c;乘车去哈工…

神舟电脑 Windows7系统从启动盘安装过程

Windows7启动盘安装 前言 家里的神舟电脑非常卡&#xff0c;系统还原之后丢失了系统引导。回去之后&#xff0c;计划保留数据&#xff0c;重装系统。 前期准备 下载系统镜像&#xff1a; 首先下载对应镜像&#xff0c;https://msdn.itellyou.cn/ 我先下载的是 Win7:Window…

神州计算机u盘启动,神舟台式电脑怎么bios设置u盘启动教程

神舟台式电脑怎么bios设置u盘启动?神舟台式电脑一直受到广大朋友的追捧,但是有小伙伴反应自己的神舟台式电脑无法设置u盘启动,造成无法顺利u盘装系统,这就尴尬了。所以接下来快启动小编为大家分享详细的神舟台式电脑怎么bios设置u盘启动教程,一起来看看吧。 神舟台式电脑从…

重新回顾早已忘却的面试题

哇哇哇。。。一边擦泪&#xff0c;一边誊写&#xff0c;早已忘却的面试题&#xff0c;需要在隆冬忆起。。。 vue vue自定义指令 通过自定义指令&#xff0c;我们可以扩展Vue的行为&#xff0c;让它在渲染DOM元素时添加额外的特性和事件&#xff0c;从而更好地完成业务需求vu…

[230608] 阅读TPO58汇总|7:30-9:00+17:05

目录 ​​​​​​​ TPO58 1 The Development of Instrumental Music [3]修辞目的题 举例说明的作用 [9]句子插入题 [10]小结题 2 Pinyon Pines and Pinyon Jays [4]否定事实信息题 [5]修辞目的题 段落在全篇的作用 [10]小结题 3 The Rise of Classic Maya Civi…

如何配置GM命令?

游戏GM命令如何配置&#xff1f;