Ich habe eine Datei mit folgendem Inhalt:Raise Ausnahme auf mehrere spezifischen "Strings", Python
XYZname_1
XYZname_2
XYZname_3
In meinem Skript Ich verwende einen re.search zu überprüfen Sie, ob die Namen falsch sind, wenn sie sind, mache ich eine raise exception
. Wenn beide Namen inkorrekt sind, wird nur beim ersten Aufruf eine Ausnahme ausgelöst und dann "abgestürzt", mit anderen Worten, der "Benutzer" wird nicht wissen, ob der zweite oder dritte Name falsch ist.
for my_file in args.cpath:
contents = open(my_file).read()
replaced_contents = my_func(contents,my_file)
def my_func(my_file_contents, filename):
for x in range(0, 3):
#Some code here which is not related to the problem
#In this if-statement I check if it does not match with re.search
#I assume a for-loop should be here? but not sure how to implement it.
if not re.search(r'(.*)XYZname_{0}\(\)\) = .*;(.*)'.format(x+1), my_file_contents):
raise Exception("The name: XYZname_{0} was not found".format(x+1) + " in " + filename)
Hier können die Namen sagen wir zuvor so gesehen werden in eine Datei geschrieben (sie falsch sind)
XYZnameHE_1
XYZnameGJ_2
XYZnameAsd_3
Dann sollte mein Skript sagen Ich kann XYZname_1,2 und 3 in der angegebenen Datei nicht finden.
Natürlich könnte es auch andere Namen geben, für die eine andere Funktion zuständig ist. Diese Namen können mit XXXname_1,2 3 usw. beginnen und wenn einer von ihnen fehlt, ich sollte eine Ausnahme für diese eine ebenso
Im Moment bekomme ich bekommen diese Ausgabe:
Exception: The name: XYZname_1 was not found in C:\Path
Aber ich möchte etwas wie dieses:
Exception: The name: XYZname_1 was not found in C:\Path
Exception: The name: XYZname_2 was not found in C:\Path
Exception: The name: XYZname_3 was not found in C:\Path
Exception: The name: XXXname_2 was not found in C:\Path
Weiß nicht, was die "beste Praxis" für das Lösen dieses ist. Eine Möglichkeit besteht darin, das Skript die gesamte Datei durchsehen zu lassen und dann "abstürzen" zu lassen. Oder "crash"/raise direkt, wenn ein Problem gefunden wird? Weil es für den Entwickler lästig wäre, das Skript mehrmals auszuführen, um alle falschen/falschen Namen zu finden.
Warum nicht die fehlenden Namen in einer Liste speichern und dann am Ende erhöhen, wenn die Liste irgendwelche Elemente enthält? –