DeaD_EyE

dec2bin

Jun 13th, 2020
530
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env python3
  2.  
  3. """
  4. Das Programm wandelt Ganzzahlen in Binärzahlen um.
  5. Als Eingabe können auch Dateien vewrwendet werden.
  6. """
  7.  
  8. import sys
  9. from argparse import ArgumentParser, FileType
  10. from bisect import bisect
  11.  
  12.  
  13. def get_args():
  14.     """
  15.    Parse arguments from command liene and return the args.
  16.    """
  17.     parser = ArgumentParser(description=__doc__)
  18.     sub_parser = parser.add_subparsers()
  19.     convert = sub_parser.add_parser(
  20.         name="convert", description="Ganzzahl", help="Ganzzahl"
  21.     )
  22.     file = sub_parser.add_parser(
  23.         name="file",
  24.         description="Datei parsen",
  25.         help="Zeile für Zeile einlesen und die Zahlen in Binärzahlen umwandeln",
  26.     )
  27.     convert.add_argument(
  28.         "integer", type=int, help="Ganzzahl zur Konvertierung nach binär"
  29.     )
  30.     file.add_argument(
  31.         "file", type=FileType("r", encoding="utf8"), help="Datei einleesn"
  32.     )
  33.     file.add_argument("-s", action="store_true", help="Sortieren")
  34.     file.add_argument("-r", action="store_true", help="Absteigend sortieren")
  35.     file.add_argument("-u", action="store_false", help="Ungültige Zeilen anzeigen")
  36.     return parser.parse_args()
  37.  
  38.  
  39. def convert(value):
  40.     return f"{value:0b}"
  41.  
  42.  
  43. def show_file(file, sort, reverse, skip_invalid):
  44.     values = []
  45.     for line in file:
  46.         try:
  47.             value = int(line)
  48.         except ValueError:
  49.             if not skip_invalid:
  50.                 print(line, end="")
  51.             continue
  52.         if sort:
  53.             index = bisect(values, value)
  54.             values.insert(index, value)
  55.         else:
  56.             print(convert(value))
  57.  
  58.     if sort and reverse:
  59.         values = reversed(values)
  60.  
  61.     if sort:
  62.         for value in values:
  63.             print(convert(value))
  64.  
  65.  
  66. def main(args):
  67.     """
  68.    Main program
  69.    """
  70.     if "integer" in args:
  71.         print(convert(args.integer))
  72.     elif "file" in args:
  73.         show_file(args.file, args.s, args.r, args.u)
  74.  
  75.  
  76. if __name__ == "__main__":
  77.     args = get_args()
  78.     sys.exit(main(args))
RAW Paste Data