Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- """
- Das Programm gibt die letzten [n] Zeichen von stdin als Großbuchstaben aus.
- """
- import io
- import os
- import sys
- from argparse import ArgumentParser
- from pathlib import Path
- def last_upper(n, file):
- """
- Gibt die letzten n Zeichen von stdin als Großbuchstaben aus.
- """
- n = -n
- stdin = io.TextIOWrapper(sys.stdin.buffer, encoding="cp850")
- if not os.isatty(stdin.fileno()):
- data = stdin.read()
- elif file:
- for encoding in ("ascii", "utf8", "utf16", "latin1"):
- try:
- data = file.read_text(encoding)
- except UnicodeDecodeError:
- continue
- else:
- break
- else:
- raise RuntimeError("Falls stdin nicht verwendet wird, muss eine Datei angegeben werden.")
- try:
- return data.rstrip().upper()[n:]
- except NameError:
- raise RuntimeError("Konnte keine passende encodierung finden.")
- if __name__ == "__main__":
- parser = ArgumentParser(__doc__)
- parser.add_argument("--n", type=int, default=1, help="Anzal der letzten Zeichen des Strings, der ausgegeben werden soll")
- parser.add_argument("--r", type=Path, default=None, help="Datei, die eingelesen werden soll.")
- args = parser.parse_args()
- try:
- print(last_upper(args.n, args.r))
- except RuntimeError as e:
- print(e, file=sys.stderr)
- sys.exit(1)
- except UnicodeDecodeError as e:
- print(e, file=sys.stderr)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement