2011-01-15 6 views
3

Ich versuche den Standard-Media-Player-Pfad von Windows zu erkennen, damit ich von meinem Python/wxPython-Programm darauf zugreifen kann. Meine spezielle Anforderung besteht darin, eine Liste aller Mediendateien zu erstellen und sie mit dem Player abzuspielen.Erkennen des Standard-Media-Players für Windows

+2

Mein Rat ist, zu versuchen, keine internen Details des Systems zu erkennen, aber verwenden 'os.system' das System„offen“die Dateien mit dem, was zu machen, denkt über entsprechende Anwendung nach – ulidtko

+0

Nun, das war einfach. Danke :) – spitfire

+0

Das einzige Problem ist, dass es fehlschlägt, wenn ein Leerzeichen im Pfad ist. – spitfire

Antwort

2

Basierend auf den obigen Kommentaren sieht es so aus, als hätten Sie sich entschieden, in eine andere Richtung zu gehen. Deine Frage hat mich allerdings neugierig gemacht, also habe ich sowieso ein bisschen gejagt.

Dateizuordnungen werden in der Windows-Registrierung gespeichert. Der Zugriff auf die Windows-Registrierungsinformationen über Python erfolgt über das Modul _winreg (verfügbar ab Version 2.0). Einzelne Dateizuordnungsinformationen für den aktuellen Benutzer werden bei Unterschlüssel benannt werden wie folgt gespeichert:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.wmv\UserChoices

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mpeg\UserChoices

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.avi\UserChoices

etc, etc für ein bestimmtes Dateiformat die Sie suchen.

Hier ist ein kleines Beispiel Skript, das ich geschrieben habe, auf diese Informationen zuzugreifen und sie als Liste speichern:

import _winreg as wr 

# Just picked three formats - feel free to substitute or extend as needed 
videoFormats = ('.wmv', '.avi', '.mpeg') 

#Results written to this list 
userOpenPref = [] 

for i in videoFormats: 
    subkey = ("Software\\Microsoft\\Windows\\CurrentVersion" + 
       "\\Explorer\\FileExts\\" + i + "\\UserChoice") 

    explorer = wr.OpenKey(wr.HKEY_CURRENT_USER, subkey) 

    try: 
     i = 0 
     while 1: 
      # _winreg.EnumValue() returns a tuple: 
      # (subkey_name, subkey_value, subkey_type) 
      # For this key, these tuples would look like this: 
      # ('ProgID', '<default-program>.AssocFile.<file-type>', 1). 
      # We are interested only in the value at index 1 here 
      userOpenPref.append(wr.EnumValue(explorer, i)[1]) 
      i += 1 
    except WindowsError: 
     print 

    explorer.Close() 

print userOpenPref 

Ausgang:

[u'WMP11.AssocFile.WMV', u'WMP11.AssocFile.avi', u'WMP11.AssocFile.MPEG']

mit WMP11 = Windows Media Player 11

Ich hoffe, das war hilfreich.

Quellen:

python docs, effbot tutorial