前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在一个python程序中运行另外一个程序

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

作者头像
叶子陪你玩
发布2020-03-12 15:23:53
5.4K0
发布2020-03-12 15:23:53
举报
很多时候,我们想要在p1.py程序中直接运行p2.py程序文件,或者想要在一个python程序中调用终端区的命令,比如直接运行一个程序就可以帮我安装很多个库,相当于在终端区运行 : pip install module_name。

下面提供两种方法。

第一种:模块法

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

实现过程:代码:

代码语言:javascript
复制
# 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

代码:

代码语言:javascript
复制
# 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")

运行结果:

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

代码语言:javascript
复制
# 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就可以了,后面其它代码都是为了获取到输出的结果。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叶子陪你玩编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一种:模块法
  • 第二种:管道方法 Popen
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档