Fix: console window closes immediately on Windows (adds input() pause)
This commit is contained in:
parent
fff8548ff4
commit
be4ca228cb
102
Hermes/iban_tool/iban.py
Normal file
102
Hermes/iban_tool/iban.py
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
iban.py - Generiert deutsche IBAN und BIC aus Kontonummer und Bankleitzahl.
|
||||||
|
|
||||||
|
Nutzung:
|
||||||
|
venv/bin/python iban.py --konto 123456789 --blz 10020520
|
||||||
|
venv/bin/python iban.py --konto 123456789 --blz 10020520 --json
|
||||||
|
venv/bin/python iban.py # startet interaktiven Eingabemodus
|
||||||
|
"""
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
import sys
|
||||||
|
from schwifty import IBAN, BIC
|
||||||
|
from schwifty.exceptions import InvalidBankCode
|
||||||
|
|
||||||
|
|
||||||
|
def generate_iban(kontonummer: str, bankleitzahl: str) -> dict:
|
||||||
|
"""Erzeugt IBAN und versucht BIC. Gibt ein Dictionary mit Ergebnissen zurueck."""
|
||||||
|
try:
|
||||||
|
bankleitzahl = str(int(bankleitzahl)) # fuehrende Nullen entfernen
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
iban_obj = IBAN.generate("DE", bank_code=bankleitzahl, account_code=kontonummer)
|
||||||
|
result = {
|
||||||
|
"iban": iban_obj.formatted,
|
||||||
|
"iban_raw": str(iban_obj),
|
||||||
|
"bic": None,
|
||||||
|
"bank_name": None,
|
||||||
|
"bank_short_name": None,
|
||||||
|
"bankleitzahl": bankleitzahl,
|
||||||
|
"kontonummer": kontonummer,
|
||||||
|
"laendercode": "DE",
|
||||||
|
"valid": True,
|
||||||
|
"error": None,
|
||||||
|
}
|
||||||
|
|
||||||
|
try:
|
||||||
|
bic_obj = BIC.from_bank_code("DE", bankleitzahl)
|
||||||
|
result["bic"] = str(bic_obj)
|
||||||
|
if bic_obj.bank_names:
|
||||||
|
result["bank_name"] = bic_obj.bank_names[0]
|
||||||
|
if bic_obj.bank_short_names:
|
||||||
|
result["bank_short_name"] = bic_obj.bank_short_names[0]
|
||||||
|
except InvalidBankCode:
|
||||||
|
result["error"] = f"BIC fuer Bankleitzahl {bankleitzahl} nicht gefunden."
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Generiert deutsche IBAN aus Kontonummer und Bankleitzahl."
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--konto", "--kontonummer", dest="konto", type=str,
|
||||||
|
help="Deutsche Kontonummer (mit oder ohne fuehrende Nullen)"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--blz", "--bankleitzahl", dest="blz", type=str,
|
||||||
|
help="Bankleitzahl (BLZ)"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--json", dest="as_json", action="store_true",
|
||||||
|
help="Ergebnis als JSON ausgeben"
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# Interaktiver Modus, wenn keine Argumente uebergeben wurden
|
||||||
|
if not args.konto or not args.blz:
|
||||||
|
if args.konto or args.blz:
|
||||||
|
print("Fehler: Bitte beide Werte (Kontonummer und Bankleitzahl) angeben.",
|
||||||
|
file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
print("=== IBAN Generator ===")
|
||||||
|
kontonummer = input("Kontonummer: ").strip()
|
||||||
|
bankleitzahl = input("Bankleitzahl (BLZ): ").strip()
|
||||||
|
print("======================")
|
||||||
|
else:
|
||||||
|
kontonummer = args.konto
|
||||||
|
bankleitzahl = args.blz
|
||||||
|
|
||||||
|
result = generate_iban(kontonummer, bankleitzahl)
|
||||||
|
|
||||||
|
if args.as_json:
|
||||||
|
print(json.dumps(result, ensure_ascii=False, indent=2))
|
||||||
|
else:
|
||||||
|
print(f"IBAN: {result['iban']}")
|
||||||
|
print(f"BIC: {result['bic'] or '(nicht gefunden)'}")
|
||||||
|
print(f"Bank: {result['bank_name'] or '(unbekannt)'}")
|
||||||
|
if result['error']:
|
||||||
|
print(f"Hinweis: {result['error']}")
|
||||||
|
|
||||||
|
# Verhindert, dass das Konsolenfenster unter Windows sofort geschlossen wird
|
||||||
|
try:
|
||||||
|
input("\n[Enter] zum Schließen...")
|
||||||
|
except EOFError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user