python有两个运行程序分别是_如何在一个python程序中运行另外一个程序(二)

上一篇文章写的比较仓促,这一篇会在上一篇基础之上写的更加细致一些,做一些补充和案例讲解。

开篇

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

游戏-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程序运行时是阻塞的,当第一个程序在运行时,程序就停在这了。

实际走向是下面这样的。

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

代码和效果:

运行原理:

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

总结:

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

(全文完)

欢迎转载,转载请注明出处!

欢迎关注公众微信号:叶子陪你玩 分享自己的python学习之路

长按二维码,

加关注!

叶子陪你玩

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值