Python 波本完成后做些什么

Python 波本完成后做些什么,python,python-3.x,subprocess,popen,Python,Python 3.x,Subprocess,Popen,我想制作一个后台进程,用外部查看器显示文件。当进程停止时,它应该删除该文件。 下面的代码是我想做的,但它很难看,我想还有一种更惯用的方法。 如果它是独立于操作系统的,那就太完美了 subprocess.Popen(viewer + ' ' + file + ' && rm ' + file, shell=True) 使用subprocess.call()打开查看器并查看文件,就可以做到这一点。随后,运行命令删除该文件 如果希望脚本在进程运行时继续,请使用threading 例

我想制作一个后台进程,用外部
查看器显示
文件
。当进程停止时,它应该删除该文件。 下面的代码是我想做的,但它很难看,我想还有一种更惯用的方法。 如果它是独立于操作系统的,那就太完美了

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

使用
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
    )并删除文件
  • 同时,继续脚本并打印“香蕉”

非常感谢您的回答。但在这种情况下,它并没有放在背景中,我无法继续工作。你所说的背景到底是什么意思?如果希望脚本继续,请使用
Threading
Yes,我希望脚本继续。我可能错过了严格定义它的确切词汇。如果我想在Linux终端上工作,我需要一种类似于
nohup bash-c'command1&&command2'&
的行为。
Threading
真的有必要吗?@mcocdawc查看我的更新答案。要么使用
subprocess.Popen()
,以您的方式抛出流程,要么让
subprocess.call()
处理作业并等待流程完成。如果您想同时继续执行脚本,执行其他操作,则需要使用
线程
@mcocdawc:您可以使用
process=Popen(['eog',path])
而不是
调用()
,以避免阻塞当前线程。要检查进程是否已退出,可以。或者您可以配置SIGCHLD信号,以便在进程退出时收到通知(如下所示)。