python调用net
A. 怎么调用编写好的python程序
1 使用os.system函数运行其他程序
2 使用ShellExecute函数运行其他程序
3 使用CreateProcess函数运行其他程序
4 使用ctypes调用kernel32.dll中的函数
1 使用os.system函数运行其他程序
os模块中的system()函数可以方便地运行其他程序或者脚本。其函数原型如下所示。
os.system(command) 其参数含义如下所示。
command 要执行的命令,相当于在Windows的cmd窗口中输入的命令。如果要向程序或者脚本传递参数,可以使用空格分隔程序及多个参数。
以下实例实现通过os.system()函数打开系统的记事本程序。
>>> import os # 使用os.system()函数打开记事本程序 >>> os.system('notepad') 0 # 关闭记事本后的返回值 # 向记事本传递参数,打开python.txt文件 >>> os.system('notepad python.txt')
>>> import os # 使用os.system()函数打开记事本程序 >>> os.system('notepad') 0 # 关闭记事本后的返回值 # 向记事本传递参数,打开python.txt文件 >>> os.system('notepad python.txt')
2 使用ShellExecute函数运行其他程序
除了使用os模块中的os.system()函数以外,还可以使用win32api模块中的ShellExecute()函数。其函数如下所示。
ShellExecute(hwnd, op , file , params , dir , bShow )
其参数含义如下所示。
hwnd:父窗口的句柄,如果没有父窗口,则为0。
op:要进行的操作,为“open”、“print”或者为空。
file:要运行的程序,或者打开的脚本。
arams:要向程序传递的参数,如果打开的为文件,则为空。
dir:程序初始化的目录。
Show:是否显示窗口。
以下实例使用ShellExecute函数运行其他程序。
>>> import win32api # 打开记事本程序,在后台运行,即显示记事本程序的窗口 >>> win32api.ShellExecute(0, 'open', 'notepad.exe', '','',0)
# 打开记事本程序,在前台运行 >>> win32api.ShellExecute(0, 'open', 'notepad.exe', '','',1)
# 向记事本传递参数,打开python.txt >>> win32api.ShellExecute(0, 'open', 'notepad.exe', 'python.txt','',1)
# 在默认浏览器中打开http://www.python.org网站 >>> win32api.ShellExecute(0, 'open', 'http://www.python.org', '','',1)
# 在默认的媒体播放器中播放E:\song.wma >>> win32api.ShellExecute(0, 'open', 'E:\\song.wma', '','',1)
# 运行位于E:\book\code目录中的MessageBox.py脚本 >>> win32api.ShellExecute(0, 'open', 'E:\\book\\code\\MessageBox.py', '','',1)
可以看出,使用ShellExecute函数,就相当于在资源管理器中双击文件图标一样,系统会打开相应的应用程序执行操作。
3 使用CreateProcess函数运行其他程序
为了便于控制通过脚本运行的程序,可以使用win32process模块中的CreateProcess()函数。其函数原型如下所示。
CreateProcess(appName, commandLine , processAttributes , threadAttributes , bInheritHandles , dwCreationFlags , newEnvironment , currentDirectory , startupinfo )
CreateProcess(appName, commandLine , processAttributes , threadAttributes , bInheritHandles , dwCreationFlags , newEnvironment , currentDirectory , startupinfo )
其参数含义如下。
appName:可执行的文件名。
commandLine:命令行参数。
rocessAttributes:进程安全属性,如果为None,则为默认的安全属性。
threadAttributes:线程安全属性,如果为None,则为默认的安全属性。
InheritHandles:继承标志。
dwCreationFlags:创建标志。
ewEnvironment:创建进程的环境变量。
currentDirectory:进程的当前目录。
tartupinfo :创建进程的属性。
以下实例使用win32process.CreateProcess函数运行记事本程序。
>>> import win32process >>> win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) (, , 280, 3076) # 函数返回进程句柄、线程句柄、进程ID,以及线程ID
>>> import win32process >>> win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) (<?XML:NAMESPACE PREFIX = PYHANDLE />, , 280, 3076) # 函数返回进程句柄、线程句柄、进程ID,以及线程ID
有了已创建进程的句柄就可以使用win32process.TerminateProcess函数结束进程,或者使用win32event.WaitForSingleObject等待创建的线程结束。其函数原型分别如下。
TerminateProcess(handle, exitCode) WaitForSingleObject(handle, milliseconds )
对于TerminateProcess参数含义分别如下。
handle:要操作的进程句柄。
exitCode:进程退出代码。
对于WaitForSingleObject参数含义分别如下。
handle:要操作的进程句柄。
milliseconds:等待的时间,如果为?1,则一直等待。
以下实例实现创建进程后并对其进行操作。
>>> import win32process # 打开记事本程序,获得其句柄>>> handle = win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) # 使用TerminateProcess函数终止记事本程序>>> win32process.TerminateProcess(handle[0],0) # 导入win32event模块>>> import win32event # 创建进程获得句柄>>> handle = win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) # 等待进程结束>>> win32event.WaitForSingleObject(handle[0], -1) 0 # 进程结束的返回值
>>> import win32process # 打开记事本程序,获得其句柄
>>> handle = win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) # 使用TerminateProcess函数终止记事本程序
>>> win32process.TerminateProcess(handle[0],0) # 导入win32event模块
>>> import win32event # 创建进程获得句柄
>>> handle = win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO()) # 等待进程结束
>>> win32event.WaitForSingleObject(handle[0], -1) 0 # 进程结束的返回值
4 使用ctypes调用kernel32.dll中的函数
使用ctypes模块可以使Python调用位于动态链接库中的函数。在Python 2.5版中已经包含了ctypes模块。如果使用其他版本的Python,可以到http://python.net/crew/theller/ctypes网站下载安装。ctypes适用于Python 2.3版本及以上。
B. 如何在.net项目中引入Python
用IronPython就OK
IronPython 是一种在 .NET 及 Mono上的 Python 实现,由微软的 Jim Hugunin 所发起,是一个开源的项目,基于微软的 DLR 引擎;托管于微软的开源网站 CodePlex(www.codeplex.com)。
IronPython 的官方并未实现 Python 通用类库,仅实现了部分核心类,社区的开源类库实现有: fepy(http://fepy.sourceforge.net/),fepy 为 IronPython 提供 Python 的大多数通用类库的实现。
C. 计算机python的实现方式都有哪些
虽然官方 Python 实现差不多得到最广泛的欢迎,但也有一些其他实现对特定领域的用户来说更具吸引力。
知名的实现包括:
CPython
这是最早出现并持续维护的 Python 实现,以 C 语言编写。新的语言特性通常在此率先添加。
Jython
以 Java 语言编写的 Python 实现。此实现可以作为 Java 应用的一个脚本语言,或者可以用来创建需要 Java 类库支持的应用。想了解更多信息可访问 Jython 网站。
Python for .NET
此实现实际上使用了 CPython 实现,但是属于 .NET 托管应用并且可以引入 .NET 类库。它的创造者是 Brian Lloyd。想了解详情可访问 Python for .NET 主页。
IronPython
另一个 .NET 的 Python 实现,与 Python.NET 不同点在于它是生成 IL 的完全 Python 实现,并且将 Python 代码直接编译为 .NET 程序集。它的创造者就是当初创造 Jython 的 Jim Hugunin。想了解详情可访问 IronPython 网站。
PyPy
完全使用 Python 语言编写的 Python 实现。它支持多个其他实现所没有的高级特性,例如非栈式支持和 JIT 编译器等。此项目的目标之一是通过允许方便地修改解释器 (因为它是用 Python 编写的),鼓励该对语言本身进行试验。想了解详情可访问 PyPy 项目主页。
以上这些实现都可能在某些方面与此参考文档手册的描述有所差异,或是引入了超出标准 Python 文档范围的特定信息。请参考它们各自的专门文档,以确定你正在使用的这个实现有哪些你需要了解的东西。以 Java 语言编写的 Python 实现。此实现可以作为 Java 应用的一个脚本语言,或者可以用来创建需要 Java 类库支持的应用。想了解更多信息可访问 Jython 网站。
Python for .NET
此实现实际上使用了 CPython 实现,但是属于 .NET 托管应用并且可以引入 .NET 类库。它的创造者是 Brian Lloyd。想了解详情可访问 Python for .NET 主页。
IronPython
另一个 .NET 的 Python 实现,与 Python.NET 不同点在于它是生成 IL 的完全 Python 实现,并且将 Python 代码直接编译为 .NET 程序集。它的创造者就是当初创造 Jython 的 Jim Hugunin。想了解详情可访问 IronPython 网站。
D. 提个python调用函数的问题,请问python调用 com 或者 .net 中含有byref 参数的函数的问题。
可以通过管道,可以通过操作系统标准输入输出传递 等等等等
总之操作系统就是php和python之间的bridge
如果说我所看的比笛卡尔更远一点,那是因为站在巨人肩上的缘故。
E. 无需安装Python,就可以在.NET里调用Python库
如果你可以很简单的引用一个Nuget包,并在无需手动修改的情况下,一切都会自动的配置好,假如可以达到这种程度,你会感觉怎么样?这就是我创建Python.Included的愿景,Python.Included可以把packages python-3.7.3-embed-amd64.zip包含在它的程序集里,这这样就允许你可以通过Nuget来有效的引用Python了。为了证明它能正常工作,并可以快速提供所有的NumSharp中仍然缺少的Numpy功能,我创建了基于Python.Included的Numpy.NET这个项目。
F. Aforge.net 调用pYthon
可以。
.NET环境可以调用Python,叫做IRONPython,Python环境下,无法调用C#,C#是编译型语言,Python是解释型语言,也就是脚本语言。
G. 如何使用它修改的地方Python中的.NET方法
PythonNet不包含本很清楚表达的IronPython的,但它几乎同样的事情。
那么,让我们来看看IronPython的文档 REF 和退出参数:
Python语言的推移,值的所有参数。有没有语法来表示一个参数应该按引用传递像有.NET语言,如C#和VB.NET通过ref和out关键字。 IronPython的支持传递ref或out参数的方法,一种含蓄的方式和明确的方式有两种方式。
在隐式方式,一种说法通常传递到方法调用,并且它的(可能)更新值从呼叫沿与正常返回值(如果有的话)方法返回。这与多个返回值的Python的功能组成以及...
在明确的方式,你可以通过 clr.Reference的一个实例[T] 的ref或out参数,它的值字段将获得由呼叫建立。如果有多个重载与ref参数显式的方法是有用...
有例子为。但把它定制您的具体情况:
itemIDs,如果itemNames = GetItems()
或者,如果你真的想要的:
itemIDsRef = clr.Reference [数组[INT]()
itemNamesRef = clr.Reference [数组[字符串]()
GetItems(itemIDs,如果itemNames)
itemIDs,如果itemNames = itemIDsRef.Value,itemNamesRef.Value
CPython的使用 PythonNet 做基本上是同样的事情。最简单的方法来做到退出参数是无法通过他们,接受他们成为多余的返回值,以及 REF 参数通过输入值作为参数,并接受输出值作为额外的返回值。就像IronPython的的隐式的解决方案。 (除与 REF 或退出参数无效功能总是返回无的 REF之前或退出参数,甚至如果它不会在IronPython的。)您可以通过检查返回值很容易弄清楚pretty的。所以,你的情况:
_,itemIDs,如果itemNames = GetItems()
同时,事实上这些恰好是阵列不使事情任何更难。由于的文档解释,PythonNet提供了可迭代接口,所有的的IEnumerable 的集合,而序列的协议,以及为阵列。所以,你可以这样做:
的ITEMID,在了itemname拉链(itemIDs,如果itemNames):
打印ITEMID,了itemname
而的Int32 和字符串对象将转换为本地 INT / 长和 STR / UNI code 对象,就好像他们是直接返回。
如果你真的想明确地将这些原生值,就可以了。 地图或列表COM prehension会给你一个Python列表,可迭代的,包括周围的 A PythonNet封装阵列或其他的IEnumerable 。你可以明确地做一个长或 UNI code 出的的Int32 或字符串如果您需要。所以:
itemIDs =地图(INT,itemIDs)
如果itemNames =地图(UNI code,如果itemNames)
不过,我看不出有多大的优势,这样做,除非你需要,例如,$ P $使用其中的任何之前对检查所有的值。
H. 请问c#怎么用pythonnet调用python
这个是不是调用啊。这个仅仅是执行。如果是说调 用的话。python for .net和iron python都支持.net调 用python的模块。
不过仅仅是执行的话也容易。假设你的start.py是一个可以执行的程序。是执行不是调用。不是import。
那么你不需要set search paths,因为这个path是给import,也就是调用使用的。你set path没有用。
你只需要全路径带过去,把start.py的全路径补全了就可以了。
要实现调用,还需要将python的模块编译成c#可以使用的库的形式。才可以直接用c#的方法import进来。很简单的。而不需要使用python这个engine。
理论上讲,如果.net支持动态加载。也可以使用动态加载的方法,使用python这个engine动态加载一个模块。不过我不知道python for .net和iron python有没有实现。这个太麻烦了。应该没有完成。
所以你还是将python的代码使用python for .net或者是iron python编译生成可以发布的库。后面就简单的了。直接在.net里import就好了。
I. python接口中net.blobs.data.shape 是怎么调用的
import numpya = numpy.array([[1,2,3],[4,5,6]])print a.shape矩阵有一个shape属性,是一个(行,列)形式的元组