美文网首页初学者PythonPython精选
如何在一个python程序中运行另外一个程序

如何在一个python程序中运行另外一个程序

作者: 叶子陪你玩 | 来源:发表于2020-01-05 09:54 被阅读0次

很多时候,我们想要在p1.py程序中直接运行p2.py程序文件,或者想要在一个python程序中调用终端区的命令,比如直接运行一个程序就可以帮我安装很多个库,相当于在终端区运行 pip install module_name。

下面提供两种方法。

第一种:模块法

将另外一个python程序封装成一个我们想要运行的模块,在模块里面,将所有代码放到一个函数里面,在另外一个程序中导入运行就可以了。

实现过程:
代码:

# p3.py
import p4
p4.print_three()

# p4.py
def print_three():
    print("hello world")
    print("hello world")
    print("hello world")

if __name__=="__main__":
    print_three()

解释:
将p4.py变成一个模块,运行模块就相当于直接运行程序。

第二种:管道方法 Popen

代码:

# p1.py
import sys
from subprocess import Popen, PIPE, STDOUT
p = Popen([sys.executable, "p2.py"],stdout=PIPE, stdin=PIPE, stderr=STDOUT)
print("运行成功")


# p2.py
print("hello world")
print("hello world")
print("hello world")

运行结果:

上面的方法是直接运行程序,如果还想获得另外一个程序的运行结果,那么还需要加一些代码。

# p1.py
import sys
from subprocess import Popen, PIPE, STDOUT

p = Popen([sys.executable, "p2.py"],stdout=PIPE, stdin=PIPE, stderr=STDOUT)

# 查看交互的内容数据是怎样的
print(p.communicate())
# 这行代码是将另外一个程序的输出结果获取到,
content = p.communicate()[0]
# 原来是 bytes类型的数据,需要将获取到的内容进行解码
print(content.decode())

print("运行成功")


# p2.py
print("hello world")
print("hello world")
print("hello world")

结果:

解释:
如果直接运行其它程序还是非常简单的,除了导入库,只需要使用Popen就可以了,后面其它代码都是为了获取到输出的结果。

(全文完)


长按二维码,加关注!叶子陪你玩

欢迎转载,转载请注明出处!
欢迎关注公众微信号:叶子陪你玩
分享自己的python学习之路

相关文章

网友评论

    本文标题:如何在一个python程序中运行另外一个程序

    本文链接:https://www.haomeiwen.com/subject/ctyqactx.html