Seite 1 von 1

Bitte um Erklärung if __name__ == 'main':

Verfasst: Dienstag 17. Januar 2012, 12:43
von busfahrer
Hallo
ich habe hier folgendes Skript "codec_extractor.py"

Code: Alles auswählen

#!/usr/bin/env python

import subprocess as sub
import sys

class FFprobe(object):
    def __init__(self, path):
        self.path = path

    def get_codecs(self):
        cmd = ["ffprobe", "-show_streams", self.path]
        handle = sub.Popen(cmd, stdout=sub.PIPE, stderr=sub.PIPE)
        output = handle.communicate()[0]
        codecs = []
        for line in output.split("\n"):
            if line.startswith("codec_name="):
                codec = line.strip().split("=")
                codecs.append(codec[1])
        print codecs


ffprobe = FFprobe(sys.argv[1])
ffprobe.get_codecs()
Wenn ich das jetzt im Terminal aufrufe erhalte ich wie erwartet diesen Output

Code: Alles auswählen

./codec_extractor.py ed_hd.avi 
['msmpeg4v2', 'ac3']
Wenn ich das Skript ändere und ans Ende "if __name__ == main" schreibe

Code: Alles auswählen

#!/usr/bin/env python

import subprocess as sub
import sys

class FFprobe(object):
    def __init__(self, path):
        self.path = path

    def get_codecs(self):
        cmd = ["ffprobe", "-show_streams", self.path]
        handle = sub.Popen(cmd, stdout=sub.PIPE, stderr=sub.PIPE)
        output = handle.communicate()[0]
        codecs = []
        for line in output.split("\n"):
            if line.startswith("codec_name="):
                codec = line.strip().split("=")
                codecs.append(codec[1])
        print codecs


if __name__ == 'main':
    ffprobe = FFprobe(sys.argv[1])
    ffprobe.get_codecs()
und es aufrufe erhalte ich keinen Output, aber auch keine Fehlermeldung.Vielleicht kann mir das jemand erklären, damit auch ich alter Trottel das kapiere.

Gruß....busfahrer

Re: Bitte um Erklärung if __name__ == 'main':

Verfasst: Dienstag 17. Januar 2012, 12:46
von cofi
Es muss auch '__main__' heissen.

Kleiner Trick, der beim Debuggen hilfreich gewesen waere: Aufruf mit `python -i` statt `python` und du haettest direkt selbst untersuchen koennen, was der Inhalt von `__name__` ist.

Re: Bitte um Erklärung if __name__ == 'main':

Verfasst: Dienstag 17. Januar 2012, 13:01
von busfahrer
Hallo
Asche auf mein Haupt. Da grübel ich jetzt seit fast 2 Tagen und schaue mir etliche Skripte an, selbst welche die ich hier selber geschrieben habe und wo ich "if __name__ == __main__" genutzt habe :oops: Es ist mir manchmal ein Rätsel wie man so blind sein kann. Vielen Dank für das wiederherstellen meiner Sehkraft :)

Gruß....busfahrer