2016-03-31 13 views
2

Ich habe ein Problem aufgrund der Tatsache, dass in meinem Python-Code os.system(filePath) ausgeführt wird, aber der Code stoppt, bis ich manuell das Fenster der geöffneten PDF-Datei zu schließen.LF> os.system (filePath) Alternative

Ich möchte eine PDF-Datei öffnen Verwenden Sie OpenCV, um meinen Bildschirm zu erfassen und so das Bild der Datei zu erfassen. Dies wird zu einem Problem, wenn der Code nicht ohne mir das Fenster schließen läuft ...

Code:

import numpy as np 
import shutil,os, cv2, SendKeys, win32com.client 

#While our In File has stuff in it 
while(os.listdir(pathForInFile)!=[]): 
    for subdir, dirs, inFile in os.walk(pathForInFile): 
     for fileName in inFile: 
      filePath= subdir+os.sep+fileName 

      os.system(filePath) 

      print "THIS WILL RUN NOT UNTIL I CLOSE FILE" 

      shell.SendKeys('{DOWN}') 

Antwort

0

Sie diese Lösung 8.1 sowohl unter Windows verwenden kann (getestet in einer virtuellen Maschine):

import os 
os.system('start path_to_my_filename.pdf') 
print("You do not need to close the opened PDF file to run and see this") 

und Ubuntu (14.04.4 LTS):

import os 
# f = /home/begueradj/Desktop/metasploitBible.pdf' 
os.system('xdg-open path_to_my_filename.pdf') 
print("You do not need to close the opened PDF file to run and see this") 
+0

Dank Bill! Es läuft jetzt und ich kann weiter debuggen und die Dinge in Bewegung halten. Ich frage mich nur, warum es mit 'Start' funktioniert? Außerdem wird das PDF nicht wie früher angezeigt und ich habe time.sleep (10) hinzugefügt, um es ein wenig zu verzögern ... – CptDeezNuts

+0

'start' öffnet die PDF-Datei mit der Standardanwendung, die in Ihrem Betriebssystem läuft, also frage ich mich was lässt dich denken * es zeigt das pdf nicht so an wie es einmal war * In meinem virtuellen und Host-Rechner sehe ich allerdings keinen Unterschied. Warum es mit 'start' funktioniert, kann ich Ihnen nicht erklären, da' start' kein Python-Befehl ist, sondern zu Ihrem Betriebssystem gehört und wie es reagiert. Warum hast du 'sleep()' hinzugefügt? –

+0

Wenn ich es ursprünglich zum 'os.system (filePath) 'hatte, würde die pdf-Datei mit der Standardanwendung geöffnet werden. Also würde es für mich geöffnet werden und der Code würde nicht laufen, bis ich ihn geschlossen habe. Ich habe den Code durch 'os.system ('start' + filePath)' ersetzt, um den Speicherort und die richtige Datei zu finden. Als ich das gemacht habe, war der Computer aufgrund der while-Schleife in Raserei geraten. Also dachte ich mir, dass ich es für eine Sekunde pausiere, da ich das PDF auf meinem Desktop sehen muss, damit mein openCV-Code einen bestimmten Bereich meines Bildschirms erfasst ... da ich PDF nicht in .jpeg oder .png konvertieren kann (Ich bin auf WIN10 D :) – CptDeezNuts

Verwandte Themen