Advertisement
nicuf

split text files into multiple 1MB txt files

Oct 24th, 2023
633
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.66 KB | None | 0 0
  1. import os
  2. from tqdm import tqdm
  3.  
  4. # Directorul în care se află fișierele txt
  5. directory = r"d:\2022_12_02"
  6.  
  7. # Funcție pentru împărțirea fișierelor în părți mai mici
  8. def split_txt_files(file_path, max_size):
  9.     with open(file_path, 'rb') as file:
  10.         data = file.read()
  11.  
  12.     # Verifică dacă fișierul este deja mai mic sau egal cu dimensiunea maximă dorită
  13.     if len(data) <= max_size:
  14.         return [data]
  15.  
  16.     parts = []
  17.     current_part = b''
  18.  
  19.     for byte in data:
  20.         if len(current_part) + 1 > max_size:
  21.             parts.append(current_part)
  22.             current_part = b''
  23.         current_part += bytes([byte])
  24.  
  25.     if current_part:
  26.         parts.append(current_part)
  27.  
  28.     return parts
  29.  
  30. # Ittrează prin fișierele txt din director
  31. for filename in os.listdir(directory):
  32.     if filename.endswith(".txt"):
  33.         file_path = os.path.join(directory, filename)
  34.         parts = split_txt_files(file_path, 1024 * 1024)  # 1 MB în bytes
  35.  
  36.         # Configurăm tqdm pentru afișarea progresului
  37.         progress_bar = tqdm(total=len(parts), desc=f"Splitting {filename}", unit="part")
  38.  
  39.         for i, part in enumerate(parts):
  40.             part_filename = f"{os.path.splitext(filename)[0]}_part{i+1}.txt"
  41.             part_path = os.path.join(directory, part_filename)
  42.  
  43.             with open(part_path, 'wb') as part_file:
  44.                 part_file.write(part)
  45.  
  46.             # Actualizăm progresul
  47.             progress_bar.update(1)
  48.             progress_bar.set_postfix({"Current Part": i+1})
  49.  
  50.             print(f"Fișierul {part_filename} a fost creat.")
  51.  
  52.         # Terminăm bara de progres
  53.         progress_bar.close()
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement