Wie kann ich Dateien in externen Programmen in Python öffnen? [Duplikat]

7

Ich frage mich, wie man Dateien in Programmen wie Notepad und Picture Viewer öffnet, abhängig von der Dateierweiterung. Ich benutze Python 3.3 unter Windows.

Ich habe etwas recherchiert und Leute haben ein Modul namens Image erwähnt, aber wenn ich dieses Modul importiere, bekomme ich einen ImportError.

Folgendes habe ich bisher:

%Vor%

Ich werde auch HTML- und JSON-Dateien haben, die ich in Notepad öffnen muss.

    
APerson 24.02.2013, 17:31
quelle

3 Antworten

5

Verwenden Sie dies, um eine Datei mit dem Standardprogramm zu öffnen:

%Vor%

Wenn Sie wirklich ein bestimmtes Programm wie Notepad verwenden möchten, können Sie das folgendermaßen machen:

%Vor%

Wenn Sie vor dem Öffnen der Datei einige if-Checks benötigen, können Sie sie auch hinzufügen. Dies zeigt Ihnen nur, wie Sie die Datei öffnen.

    
user2032433 24.02.2013, 17:35
quelle
14

Unter Windows können Sie os.startfile() verwenden, um eine Datei mit der Standardanwendung zu öffnen :

%Vor%

Es gibt kein shutil.open() , das dies plattformübergreifend tun würde. Die enge Annäherung ist webbrowser.open() :

%Vor%

, das automatisch den Befehl open unter OS X, os.startfile() unter Windows, xdg-open oder ähnlich unter Linux verwendet.

Wenn Sie eine bestimmte Anwendung ausführen möchten, können Sie das Modul subprocess verwenden, z. B. Popen() . erlaubt es, ein Programm zu starten, ohne auf den Abschluss zu warten:

%Vor%

Es gibt viele Möglichkeiten, das Modul subprocess zum Ausführen von Programmen zu verwenden, zB subprocess.check_call(command) blockiert, bis der Befehl beendet wird, und löst eine Ausnahme aus, wenn der Befehl mit einem Exit-Code ungleich Null endet.

    
jfs 24.02.2013 18:37
quelle
4

Erweitern Sie den Vorschlag von FatalError mit einem Beispiel.

Ein zusätzlicher Vorteil der Verwendung von subprocessing anstelle von os.system besteht darin, dass dieselbe plattformübergreifende Syntax verwendet wird ( os.system unter Windows erfordert zu Beginn einen "Start", während OS X "open" erfordert). Keine große Sache, aber eine Sache weniger, an die man sich erinnert.

Öffnen einer Datei mit subprocess.call .

Alles, was Sie tun müssen, um ein Programm zu starten, ist der Aufruf von subprocess.call() und lass in einem list von Argumenten, wobei der erste der Pfad zum Programm ist und der Rest zusätzliche Argumente sind, die Sie dem Programm liefern wollen du startest.

Zum Beispiel, Notepad.exe

zu starten %Vor%

Das Übergeben mehrerer Argumente und Pfade ist ebenso einfach. Fügen Sie einfach weitere Elemente zur Liste hinzu.

Starten mit mehreren Argumenten

Dadurch wird beispielsweise eine JAR-Datei mit einer bestimmten Kopie der Java-Laufzeitumgebung gestartet.

%Vor%

Argument 1 zielt auf das Programm ab, das ich starten möchte. Argument2 liefert ein Argument an das Programm teilt ihm mit, dass es eine JAR ausführen wird, und schließlich teilt Argument3 dem Zielprogramm mit, wo die zu öffnende Datei zu finden ist.

    
Zack Yoshyaro 24.02.2013 18:15
quelle

Tags und Links