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

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

作者头像
叶子陪你玩
发布2020-03-12 15:24:26
3.1K0
发布2020-03-12 15:24:26
举报
上一篇文章写的比较仓促,这一篇会在上一篇基础之上写的更加细致一些,做一些补充和案例讲解。

开篇

首先来看这样的一个场景,有两个游戏,运行的时候是这样的。

游戏-1:

游戏-2:

为了更有互动性和选择性,这时你突然有一个想法,制作一个新的启动程序,程序开始会问我想问我玩那个游戏,提供 1 和 2两种选择,当我输入1时,就会启动游戏 1,选择2的时候就会启动游戏2。

上面的运行游戏1和运行游戏2这样写是会报错的,这里只是为了更好的描述自己的一个想法,接下来就是怎样去实现这样的功能。

刚好我学习过python模块的概念,知道可以将这两个程序当做模块使用,里面的所有内容封装成一个函数,在主程序内导入模块,然后调用函数就可以实现了。

第一种:模块方法

两个游戏程序:

主程序代码和结果:

解释:

首先开始导入game1和game2模块,之后在条件判断中直接调用(模块名+方法)就可以了。

如果你没有学习python的模块的方法,那你肯定是很难想到这样的方法的。你的第一直觉应该是,python有没有这样的一个方法,可以直接调用python程序文件的,当我选择1时,就直接运行game1.py,选择2时就运行game2.py。

这种想法其实是非常常见的,也符合我们的一个正常的逻辑思维。

第二种:系统命令

解释:

利用os模块可以直接调用操作系统的方法,这里用的是os.system()方法,里面可以直接填写操作系统的一个方法,这里用的方法就和我们平常在终端开启程序是一样的命令,使用 python 文件名.py 指令就可以了。

除了上面调用系统的命令的方法,还有把程序当做文件的两种方法。

第三种:打开文件-1

代码和结果:

解释:

利用os模块的popen方法,用python解释器以读的模式打开文件,打开后还得加上读的方法才可以运行。

第四种:打开文件-2

代码和结果:

解释:

这个方法和上面的其实是类似的,只不过用的是子进程中的一个方法,注意是大写的P开头的,后面的communicate是用来传递信息的。这个方法相对上面一个方法,会更加灵活。具体可参考官方文档:https://docs.python.org/zh-cn/3.7/library/subprocess.html#module-subprocess

拓展:

如果想同时启动两个程序该怎样操作呢,正常思路我们肯定就是写两条指令,一条执行第一个程序,另外一条第二个程序,但是实际运行效果发现确是显示一个游戏窗口,关闭后才会显示第二个。这是因为pygame程序运行时是阻塞的,当第一个程序在运行时,程序就停在这了。

实际走向是下面这样的。

这显示不是我们想要的结果,下面利用多进程去解决。

代码和效果:

运行原理:

运行到对应的游戏,就直接开启一个新进程,当前程序继续往后,互不影响(如果调用主程序的内容,可能就会有影响了,考虑到生命周期的,这里就不讨论,也不影响。)

总结:

四种方法汇总到一起。如果对于拓展内容不理解可以去看进程线程等相关性知识,或者找我帮你解答也可以。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开篇
  • 第一种:模块方法
  • 第二种:系统命令
  • 第三种:打开文件-1
  • 第四种:打开文件-2
  • 拓展:
  • 总结:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档