2010-01-03 5 views
3
import os 
import pprint 
import subprocess 
def Convert (dir): 
    curDir = dir 
    pathToBonk = "C:\\Program Files\\BonkEnc\\becmd.exe" #Where the becmd.exe file lives 
    problemFiles = [] #A list of files that failed conversion 
    # 
    for item in os.listdir(curDir): 
     if item.upper().endswith('.M4A'): 
      fullPath = os.path.join(curDir,item) 
      cmd = '"%s" -e LAME -d "%s" "%s"' #The command to convert a single file 
      cmd = cmd % (pathToBonk, curDir, fullPath) 
      val = subprocess.call(cmd) 
      if val == 0: #Successfull conversion, delete the original 
       os.remove(fullPath) 
      else: 
       problemFiles.append(fullPath) 
       print 'Problem converting %s' % item 
       os.rename(fullPath, fullPath + ".BAD") 
    print 'These files had problems converting and have been renamed with .BAD extensions:' 
    pprint.pprint(problemFiles)  

var = raw_input("Insert Path: ") 
var.decode("iso-8859-8") 
Convert(var) 
système de fichier

Salut, Je veux reformater ma musique de .m4a dans des chansons mp3. J'utilise la ligne de commande bonkenc.python entrée hebrew format

Le problème est que certains de mes dossiers sont en hébreu. Lorsque j'utilise ce script dans des dossiers qui ne contiennent pas d'hébreu - Cela fonctionne parfaitement. mais quand il y a de l'hébreu dans le chemin, la table ne fonctionne pas.

J'ai essayé d'encoder \ deconding l'hébreu, mais rien n'a aidé.

Je cours Windows XP P2. Merci d'avance, Liron.

+1

Il serait utile si vous avez dit ce problème est arrivé. Je comprends que vous ayez une exception - laquelle? où? est le problème lié à l'exe externe que vous exécutez ou cela arrive-t-il aussi si vous ne laissez que le squelette du code python? – daphshez

+0

voir: http://stackoverflow.com/questions/497233/pythons-os-path-choking-on-hebrew-filenames – Oren

+0

yep. mais il jette parfois une exception que je ne pouvais pas attraper. –

Répondre

0

Utilisez simplement os.listdir(unicode(str)) au lieu de os.listdir(str) afin d'être sûr que str est Unicode, sinon il échouera tout simplement.

Même problème se trouve sur this question