Seite 1 von 1

Seltsames print() Problem bei Verwendung von DLL-Wrapper

Verfasst: Montag 21. März 2011, 03:09
von Hazzard
Hallo,

ich habe ein seltsames Problem. Der untenstehende Code läuft nur mit folgender Zeile (17):

Code: Alles auswählen

print("", end="")
Wenn ich das auskommente, dann funktioniert nichts mehr. Bzw. genauer gesagt die Exception springt an, weil MI.Get() nichts mehr zurückgibt. Ich verstehe nicht wie so etwas sein kann. Selbst wenn es an der DLL/Wrapper liegen sollte, würde man das doch mit so einem print() was im Prinzip nichts macht nicht reparieren können.

Ich verwende Python 2.7 x64 und Windows 7.
Die MediaInfoDLL gibts hier: http://mediainfo.sourceforge.net/de/Download

Code: Alles auswählen

from __future__ import print_function
import sys, codecs, os.path
from MediaInfoDLL import *

DIR = os.path.abspath(u".")

sys.stdout = codecs.getwriter(u'UTF-8')(sys.stdout)
MI = MediaInfo()

album = True

for f in os.listdir(DIR):
    f = os.path.join(DIR, f)
    if os.path.isdir(f):
        album = True
    else:
        print("", end="")
        MI.Open(f)
        try:
            if album:
                print("\n%s - %s" % (MI.Get(Stream.General, 0, u"Performer"), MI.Get(Stream.General, 0, u"Album")))
                album = False
            print("%02u - %s" % (int(MI.Get(Stream.General, 0, u"Track/Position")), MI.Get(Stream.General, 0, u"Title")))
        except ValueError as e:
            print("%s: %s" % (f, e))
            pass
        MI.Close()
Ich weiß, mutagen und so gibts auch noch, aber ich brauch MediaInfo.

Re: Seltsames print() Problem bei Verwendung von DLL-Wrapper

Verfasst: Montag 21. März 2011, 06:52
von snafu
Zeige mal bitte die Exception und den Code, den du in diesem Moment tatsächlich laufen lässt. Ich glaube kaum, dass es an diesem "print()-Platzhalter" liegt.

Re: Seltsames print() Problem bei Verwendung von DLL-Wrapper

Verfasst: Dienstag 22. März 2011, 20:51
von Hazzard
Mist, ich kann den Fehler nicht mehr reproduzieren.

Die Exception war: invalid literal for int() with base 10: ''

Den Code den ich gepostet hab, hab ich 1:1 so ausprobieren. Ohne das print gings nicht. Jetzt gehts auf einmal.
Vielleicht hat der DLL Loader von Windows gesponnen oder so. Ich denk ein Neustart hat das wieder repariert.