Advertisement
FranzVuttke

yielding.py

Nov 23rd, 2023
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.51 KB | Source Code | 0 0
  1. #!/usr/bin/python
  2. #
  3. # https://realpython.com/introduction-to-python-generators/
  4. #
  5. LARGE_FILE = "/home/ounis/pyapps/LARGE_FILE_4_TEST"
  6. import os
  7. import sys
  8. from time import sleep
  9. import random
  10.  
  11. def gen_unexpected_err():
  12.     while True:
  13.         pass
  14.  
  15. def wiatraczek():
  16.     for i in range(616):
  17.         sys.stderr.write("*{}\r".format(i))
  18.         sys.stderr.flush()
  19.         sleep(.005)
  20.     print()
  21.  
  22.  
  23. def csv_yielder(file_name):
  24.     wiatraczek = ["-", "\\", "|", "/", "-", "\\", "|", "/"]
  25.     rows = 0
  26.     lst = []
  27.     for _ in open(file_name):
  28.         # rows += 1
  29.         # sys.stdout.write("Lines: {}\r".format(rows))
  30.         # sys.stdout.flush()
  31.         yield _
  32.         # if rows > 1000000:
  33.         #     # ...
  34.         #     break
  35.     ...
  36.  
  37. def csv_reader(file_name):
  38.     file = open(file_name)
  39.  
  40.     try:
  41.         result = file.read().split("\n")
  42.     except Exception as err:
  43.         if isinstance(err, MemoryError):
  44.             result = {"err_desc": [616, "memory error!!!"]}
  45.         else:
  46.             result = {"err_desc": [-1, "some unexpected error... {}".format(repr(err))]}
  47.  
  48.  
  49.     return result
  50.  
  51.  
  52. def load_file():
  53.     print("Loading...")
  54.     # csv_gen = csv_reader(LARGE_FILE)
  55.     csv_gen = csv_yielder(LARGE_FILE)
  56.     rows = 0
  57.     if isinstance(csv_gen, dict):
  58.         print(csv_gen.get("err_desc")[1])
  59.     else:
  60.         for row in csv_gen:
  61.             rows += 1
  62.  
  63.     print("\nRow count: {0}".format(rows))
  64.  
  65.  
  66. # wiatraczek()
  67. load_file()
  68.  
  69. #  3674161
  70. # 64186394
  71. #   262441
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement