Gibt es eine plattformunabhängige äquivalent des os.startfile()?
Ich möchte ein Programm auf mehreren Plattformen (einschließlich Mac OS), so dass ich versuchen, es so plattformunabhängig wie möglich. Ich benutze Windows mich, und ich habe eine Linie os.startfile(file)
. Das funktioniert für mich, aber nicht auf anderen Plattformen (ich lese in der Dokumentation, habe ich noch nicht getestet für mich selbst).
Gibt es ein äquivalent, das funktioniert für alle Plattformen?
Durch die Art und Weise, die Datei ist eine .wav
Datei, aber ich wollen, dass Benutzer in der Lage, Ihre standard-media-player, so können Sie pause/Rückspulen der Datei. Das ist, warum ich verwenden os.startfile()
. Ich könnte in der Lage sein, um die Arbeit mit den Bibliotheken, die auch erlauben, das Abspielen/anhalten/Zurückspulen von Mediendateien.
- Versuchen Sie : pygame.org/project-Python+Media+Player-185-.html
- Verwandte: Starten Sie ein Anderes Programm Aus Python >Getrennt<
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es, dass ein cross-Plattform-Datei-öffnen-Modul ist noch nicht vorhanden, aber Sie können sich auf bestehende Infrastruktur des beliebten systems. Dieses snippet deckt Windows, MacOS und Unix-ähnlichen Systemen (Linux, FreeBSD, Solaris...):
os.startfile
auf Win32, und open/xdg-open anderswo. Nun, Windows wird separat behandelt, die code verwenden könnensubprocess.call
zu handhaben Datei-Namen mit Leerzeichen oder Sonderzeichen. (Auf Windowsstart
ist Teilcmd
, sosubprocess.call
ohneshell=True
würde nicht funktionieren.)os.remove()
, und wenn ich Recht hab, MacOS verwendetrm
entfernen. Kann ichsubprocess.call(["rm", filename])
im MacOS?os.remove
🙂webbrowser.open()
.webbrowser.open()
macht das richtige (auf welchem OS, aber?), aber es könnte nicht für die OP.python -mwebbrowser some.wav
auf Ihrem system?webbrowser
Modul wurde nicht entwickelt, für die OP ' s Zweck. Während es kann passieren, bis jetzt funktioniert, könnte es leicht brechen in die Zukunft.Module 'os' has no 'startfile' member (no-member)
startfile
ist ein dokumentierte Mitgliedos
auf Windows.os.startfile
.Verwenden Sie einfach
webbrowser.open(Dateiname)
. es kann anrufenos.startfile()
,open
,xdg-open
wo es angebracht ist.Vorsicht, es gibt eine beängstigend text in den docs:
Es funktioniert gut für mich. Testen Sie es in Ihre Umgebung.
Blick auf
webbrower
's-source-code zu sehen, wie viel Arbeit getan werden muss, um tragbar sein.Gibt es auch eine offene Frage, auf Python bug-tracker -- Hinzufügen shutil.öffnen. "portable os.startfile ()" - Schnittstelle erwies sich komplexer als erwartet. Sie könnten versuchen, die patches eingereicht, z.B.,
shutil.Start()
.True
aber nicht wirklich etwas tun.open
Befehl auf OS X. Wenn es nicht für Sie arbeiten, dann erstellen Sie eine minimale code-Beispiel und poste es als eine separate Frage.python -m webbrowser my.wav
und beschreiben, was passiert ist, erwähnen Sie Ihr Betriebssystem, python-Versionen. Das ist alles.Es hängt was du meinst mit Plattform-unabhängig. Wenn Ihre Frage ist, wie offen alles Verwendung der Standard-Aktion des OS, zum Beispiel, wenn Sie einen Doppelklick auf eine Datei lassen das Betriebssystem entscheiden, wie, um es zu öffnen, dann ist die einfache Antwort, keine.
Jedoch, um diese Funktionalität zu implementieren selbst, ist sehr einfach, aber Sie müssen ein paar verschiedene Methoden, um Platz für verschiedene Betriebssysteme. Das heißt, die meisten verzeihen Methode ist die Verwendung
os.system(WinPathWithArgs)
als ich erklärt habe,in dieser Antwort.