在popen完成后做一些事情

时间:2016-09-17 14:17:21

标签: python python-3.x subprocess popen

我想制作一个显示file外部viewer的后台流程。当进程停止时,它应该删除该文件。 下面的代码完成了我想做的事情,但它很丑陋,我想有一种更惯用的方式。 如果它甚至与操作系统无关,那将是完美的。

 subprocess.Popen(viewer + ' ' + file + ' && rm ' + file, shell=True)

1 个答案:

答案 0 :(得分:2)

使用subprocess.call()打开查看器并查看文件将完全这样做。随后,运行命令删除文件。

如果您希望在进程运行时继续脚本,请使用threading

一个例子:

from threading import Thread
import subprocess
import os

def test():
    file = "/path/to/somefile.jpg"
    subprocess.call(["eog", file])
    os.remove(file)

Thread(target = test).start()
# the print command runs, no matter if the process above is finished or not
print("Banana")

这将完全按照您的描述进行:

  • 使用eog(查看器)打开文件,等待它完成(关闭eog)并删除该文件。
  • 在此期间,继续编写脚本并打印" Banana"。