2016-09-17 10 views
1

외부에 viewer을 표시하는 백그라운드 프로세스를 만들고 싶습니다. 프로세스가 중지되면 파일을 삭제해야합니다. 다음 코드는 내가하고 싶은 일을하지만,보기 흉하다. 더 관용적 인 방법이 있다고 생각한다. 심지어 OS 독립적 인 경우 완벽 할 것입니다. 정확히 할 것 파일 뷰어를 열어 볼 수 subprocess.call()를 사용popen 완료 후 작업 수행

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

답변

2

. 그런 다음 명령을 실행하여 파일을 삭제하십시오.

당신이 프로세스가 실행되는 동안 스크립트를 계속하려면, 사용 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 닫음) 파일을 제거 할 때까지 기다립니다.
  • 그 동안 스크립트를 계속하고 "바나나"를 인쇄하십시오.
+0

답변 해 주셔서 감사합니다. 그러나이 경우에는 배경이되지 않아서 작업 할 수 없습니다. – mcocdawc

+0

당신은 배경을 정확히 의미합니까? 스크립트를 계속하려면'Threading'을 사용하십시오 –

+0

예, 스크립트를 계속 진행하겠습니다. 나는 그것을 정확하게 정의하기 위해 정확한 어휘를 놓치고있을 것이다. 리눅스 터미널에서 작업한다면''nohup bash -c 'command1 && command2'&''와 같은 동작을 원합니다. "실을 꿰는 것"이 ​​정말로 필요한가요? – mcocdawc