2017-01-21 7 views
1

Ich kann eine PDF-Datei aus Python mit subprocess.Popen() öffnen, aber ich habe Probleme beim Schließen der PDF-Datei. Wie kann ich eine geöffnete PDF-Datei mit Python schließen? Mein Code ist:So öffnen und schließen Sie eine PDF-Datei aus Python

# open the PDF file 
plot = subprocess.Popen('open %s' % filename, shell=True) 

# user inputs a comment (will subsequently be saved in a file) 
comment = raw_input('COMMENT: ') 

# close the PDF file 
#psutil.Process(plot.pid).get_children()[0].kill() 
plot.kill() 

Edit: ich die PDF sofort nach dem Öffnen schließen kann (mit plot.kill()), aber das funktioniert nicht, wenn ein anderer Befehl ist, um die PDF zwischen Öffnen und ‚Tötung‘ es. Jede Hilfe wäre großartig - danke im Voraus.

+0

https://stackoverflow.com/questions/4789837/how-to-terminate-a-python-subprocess-launched-with-shell-true – Ewoud

+0

@Ewoud Dank für den Zeiger. Ich habe diese Beispiele getestet, um meine PDF-Datei zu schließen, aber die PDF-Datei bleibt geöffnet. Hast du eine Idee? – gpce

Antwort

0

Für mich funktioniert das hier gut ... Vielleicht können Sie anstelle von "öffnen" einen direkten Befehl für den PDF-Reader verwenden? Befehle wie "offen" neigen dazu, einen neuen Prozess zu erstellen und dann sofort herunterzufahren. Ich weiß nicht, Ihre Umgebung oder irgendetwas, aber für mich, auf Linux, das funktionierte:

import subprocess 
import signal 
import os 

filename="test.pdf" 
plot = subprocess.Popen("evince '%s'" % filename, shell=True) 

input("test") 
os.killpg(os.getpgid(plot.pid), signal.SIGTERM) 

auf Windows/Mac, dies wird wahrscheinlich funktionieren, wenn Sie ändern ‚evince‘ auf den Pfad der ausführbaren Datei von Ihr PDF-Reader.

Verwandte Themen