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