python动态运⾏py代码_Python动态调⽤Py脚本的⽅法
1、最简单的⽅法,打开⼀个系统进程:
import os
os.system("python filename")
filename最好是全路径+⽂件名。
2、打开外部shell,运⾏CMD窗⼝。
import os
os.system("bash")
#或者:
import subprocess
subprocess.call(['ls -l','-l'],shell=True)
3、execfile('xx.py'),括号内为py⽂件路径。
如果需要传参数,就⽤os.system()那种⽅法;
如果还想获得这个⽂件的输出,那就得⽤os.popen();
4、exec("code")
可以运⾏⾥⾯以字符串⽅式保存的python代码。
注意:直接定义的字符串换⾏的换⾏符必须转为"\n"才能运⾏。
5、import XXX
可以动态运⾏,跟调⽤模块⼀样,⾥⾯的全局函数将被执⾏。
要注意路径。python怎么读取py文件
调⽤shell的更多⽅法:
1.1 os.system(command)
在⼀个⼦shell中运⾏command命令,并返回command命令执⾏完毕后的退出状态。这实际上是使⽤C标准库函数system()实现的。这个函数在执⾏command命令时需要重新打开⼀个终端,并且⽆法保存command命令的执⾏结果。
1.2 os.popen(command,mode)
打开⼀个与command进程之间的管道。这个函数的返回值是⼀个⽂件对象,可以读或者写(由mode决定,mode默认是'r')。如果mode
为'r',可以使⽤此函数的返回值调⽤read()来获取command命令的执⾏结果。
1.statusoutput(command)
使⽤os. getstatusoutput ()函数执⾏command命令并返回⼀个元组(status,output),分别表⽰command命令执⾏的返回状态和执⾏结果。对command 的执⾏实际上是按照{command;} 2>&1的⽅式,所以output中包含控制台输出信息或者错误信息。output中不包含尾部的换⾏符。
2.1 subprocess.call(["some_command","some_argument","another_argument_or_path"])
subprocess.call(command,shell=True)
2.2 subprocess.Popen(command, shell=True)
如果command不是⼀个可执⾏⽂件,shell=True不可省。
使⽤subprocess模块可以创建新的进程,可以与新建进程的输⼊/输出/错误管道连通,并可以获得新建进程执⾏的返回状态。使⽤subprocess模块的⽬的是替代os.system()、os.popen*()、commands.*等旧的函数或模块。
最简单的⽅法是使⽤class subprocess.Popen(command,shell=True)。Popen类有Popen.stdin,Popen.stdout,Popen.stderr三个有⽤的属性,可以实现与⼦进程的通信。
将调⽤shell的结果赋值给python变量
复制代码 代码如下:
handle = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
print handlemunicate()[0]
在Python/wxPython环境下,执⾏外部命令或者说在Python程序中启动另⼀个程序的⽅法⼀般有这么⼏个:
1、os.system(command)
2、wx.Execute(command, syn=wx.EXEC_ASYNC, callback=None)
若置syn为wx.EXEC_ASYNC则wx.Excute函数⽴即返回,若syn=wx.EXEC_SYNC则等待调⽤的程序结束后再返回。
callback是⼀个wx.Process变量,如果callback不为None且syn=wx.EXEC_ASYNC,则程序结束后将调⽤wx.Process.OnTerminate()函数。
os.system()和wx.Execute()都利⽤系统的shell,执⾏时会出现shell窗⼝。如在Windows下会弹出控制台窗⼝,不美观。下⾯的两种⽅法则没有这个缺点。
3、class subprocess.Popen
最简单的⽤法是:
复制代码 代码如下:
import subprocess
subprocess.Popen(command, shell=True)
如果command不是⼀个可执⾏⽂件,shell=True不可省。
前⾯三个⽅法只能⽤于执⾏程序和打开⽂件,不能处理URL,打开URL地址可⽤webbrowser模块提供的功能。
4、webbrowser.open(url)
调⽤系统缺省浏览器打开URL地址,如 webbrowser.open('www.jb51'),也可以利⽤
webbrowser.open('h:\python.zip')来执⾏程序。这样可以不必区分是⽂件名还是URL,不知道在Linux下是否可⾏。
以上在Windows2000,Python2.4a1,wxPython 2.5.1运⾏。
modify:还有⼀种⽅式:subprocess.call(*args, **kwargs)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论