python启动另外一个pc的进程_从python启动其他程序

我们可以利用内建的 subprocess 模块中的 Popen()函数,Python 程序可以启动计算机中的 其他程序(Popen()函数名中的 P 表示 process,进程)。如果你打开了一个应用程序 的多个实例,每个实例都是同一个程序的不同进程。例如,如果你同时打开了 Web浏览器的多个窗口,每个窗口都是 Web 浏览器程序的不同进程。如图:

这是 同时打开多个计算器进程的例子

我们知道每个进程可以有多个线程。不像线程。进程无法直接读写另一个进程的变量。如果你认为多线程程序是多个手指在追踪代码,那么同一个程序打开多个进程就像有一个朋友拿着程序源代码的独立副本,你们都是独立执行不同的程序。如果想在 Python 脚本中启动一个外部程序,就将该程序的文件名传递给 subprocess.Popen()(在 Windows 中,右键点击该应用程序的开始菜单项,然后选择 “属性”,查看应用程序的文件名。在 OS X 上,按住 Ctrl 键单击该应用程序并选择“显示包内容”,找到可执行文件的路径)。Popen()函数随后将立即返回。请记住, 启动的程序和你的 Python 程序不在同一线程中运行。

接下来让我们在windows系统上,在交互模式输入以下代码:

>>> import subprocess

>>> subprocess.Popen('C:\\Windows\\System32\\calc.exe')

返回值是一个 Popen 对象,它有两个有用的方法:poll()和 wait()。 可以认为 poll()方法是问你的朋友,它是否执行完毕你给她的代码。如果这个 进程在 poll()调用时仍在运行,poll()方法就返回 None。如果该程序已经终止,它会返回该进程的整数退出代码。退出代码用于说明进程是无错终止(退出代码 为 0),还是一个错误导致进程终止(退出代码非零,通常为 1,但可能根据程序而不同)。 wait()方法就像是等着你的朋友执行完她的代码,然后你继续执行你的代码。 wait()方法将阻塞,直到启动的进程终止。如果你希望你的程序暂停,直到用户完成与其他程序,这非常有用。wait()的返回值是进程的整数退出代码。

在 Windows 上,在交互环境中输入以下代码。请注意, wait()的调用将阻塞,

直到退出启动的计算器程序。

1 >>> calcProc = subprocess.Popen('c:\\Windows\\System32\\calc.exe')

2 >>> calcProc.poll() == None

True

3 >>> calcProc.wait()

0

>>> calcProc.poll()

0

这里,我们打开了计算器程序1。在它仍在运行时,我们检查 poll()是否返回 None。它应该返回 None2,因为该进程仍在运行。然后,我们关闭计算器程序,并对 已终止的进程调用 wait()3。wait()和 poll()现在返回 0,说明该进程终止且无错。

向 Popen()传递命令行参数

用 Popen()创建进程时,可以向进程传递命令行参数。要做到这一点,向 Popen() 传递一个列表,作为唯一的参数。该列表中的第一个字符串是要启动的程序的可执 行文件名,所有后续的字符串将是该程序启动时,传递给该程序的命令行参数。实际上,这个列表将作为被启动程序的 sys.argv 的值大多数具有图形用户界面(GUI)的应用程序,不像基于命令行或基于终端的程序那样尽可能地使用命令行参数。但大多数 GUI 应用程序将接受一个参数,表示应用程序启动时立即打开的文件。例如,如果你使用的是 Windows,创建一个简单的文本文件 C:\hello.txt,然后在交互式环境中输入以下代码:

>>> subprocess.Popen(['C:\\Windows\\notepad.exe', 'C:\\hello.txt'])

这不仅会启动记事本应用程序,也会让它立即打开 C:\hello.txt。

今天就分享到这,感谢大家支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值