mein Ziel ist es, die Ausgabe des Scriptes je nach Aufrufer unterschiedlich zu halten.
Wird das Script direkt von der Console aus gestartet, soll die Ausgabe als String in die Console erfolgen.
Erfolgt der Aufruf allerdings aus einem anderen Script, so möchte ich eine Liste ausgeben, um diese dann ggf. weiter zu verarbeiten.
Ich habe das jetzt folgendermaßen gelöst, und frage mich, ob das auch schöner geht, und was sonst noch zu verbessern wäre.
Über Eure Kommentare freue ich mich.
Code: Alles auswählen
def ocr_tags_values(filename):
with open(filename, 'rU') as fileobject:
ocr_data = fileobject.read()
tagnames = ['feldwert', 'fieldvalue']
liste = []
matches = re.findall(r'''
<(.*)>.* # Tag
\n # Umbruch
.*<(?:{0})>(.*)</(?:{0})> # Wert
'''
.format('|'.join(tagnames)),
ocr_data,
re.VERBOSE + re.IGNORECASE)
for match in matches:
liste.append(match[0] + ': ' + match[1])
# Wenn Aufruf von außen, dann Strings zurückgeben
if __name__ == '__main__':
for item in liste:
print item
# sonst die Liste
else:
return liste
# *****************************************************************************
# Für externen Aufruf, bspw. von der Console
if __name__ == '__main__':
if len(sys.argv) <= 1:
print u'Bitte Dateinamen übergeben'
else:
ocr_tags_values(sys.argv[1])