Guest User

generate_file_list.py

a guest
May 29th, 2024
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.97 KB | Source Code | 0 0
  1. import random
  2. import string
  3. import json
  4.  
  5. # Константы
  6. # 1099511627776 = 1 Tibibyte 1024^4
  7. # 1073741824 = 1 Gibibyte 1024^3
  8. total_size_to_generate = 450000000000  # Примерное значение в байтах
  9. max_concurent = 16
  10. output_file = 'filelist.txt'
  11.  
  12. # Функция для генерации реквизитов файла
  13. def generate_file_specs():
  14.     hex_chars = '23456789abcdef'
  15.     folder = ''.join(random.choice(hex_chars) for _ in range(2))
  16.     filename = ''.join(random.choice(string.hexdigits.lower()) for _ in range(51)) + '.sj1'
  17.     filesize = random.randint(4096, 1000000)
  18.    
  19.     return {
  20.         'folder': folder,
  21.         'filename': filename,
  22.         'filesize': filesize
  23.     }
  24.  
  25. # Основной цикл
  26. def main_loop(total_size_to_generate, max_concurent, output_file):
  27.     bytes_generated = 0
  28.     finished = 0
  29.     with open(output_file, 'a') as f:
  30.         while bytes_generated < total_size_to_generate:
  31.             num_files = random.randint(1, max_concurent)
  32.             files = []
  33.            
  34.             for _ in range(num_files):
  35.                 file_specs = generate_file_specs()
  36.                 files.append(file_specs)
  37.                 # Выход из цикла, если достигли нужного объема
  38.                 if (bytes_generated + file_specs['filesize']) >= total_size_to_generate:
  39.                     finished = 1
  40.                     break
  41.                 bytes_generated += file_specs['filesize']
  42.                
  43.             # Выход из внешнего цикла, если достигли нужного объема
  44.             if finished:
  45.                 print( f"bytes generated {bytes_generated} of {total_size_to_generate}")
  46.                 break
  47.             else:
  48.                 # Сохраняем в файл
  49.                 f.write(json.dumps(files) + '\n')
  50.  
  51. # Запуск основного цикла
  52. main_loop(total_size_to_generate, max_concurent, output_file)
Advertisement
Add Comment
Please, Sign In to add comment