Advertisement
nicuf

split all text files from folder

Feb 8th, 2022
834
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.53 KB | None | 0 0
  1. EXPLANATION:
  2.  
  3. ROMANIAN: https://neculaifantanaru.com/python-split-all-text-files-from-folder.html
  4. ENGLISH:  https://neculaifantanaru.com/en/python-split-all-text-files-from-folder.html
  5. -----------------------------
  6.  
  7.  
  8. import sys
  9. import os
  10. import nltk
  11. from nltk import tokenize
  12.  
  13. def read_text_from_file(file_path):
  14.     """
  15.    Aceasta functie returneaza continutul unui fisier.
  16.    file_path: calea catre fisierul din care vrei sa citesti
  17.    """
  18.     with open(file_path, encoding='utf8') as f:
  19.         text = f.read()
  20.         return text
  21.  
  22.  
  23. def write_to_file(text, file_path):
  24.     """
  25.    Aceasta functie scrie un text intr-un fisier.
  26.    text: textul pe care vrei sa il scrii
  27.    file_path: calea catre fisierul in care vrei sa scrii
  28.    """
  29.     with open(file_path, 'wb') as f:
  30.         f.write(text.encode('utf8', 'ignore'))
  31.  
  32. def imparte_fisiere(cale_fisier_txt, cale_folder_fisiere_impartite):
  33.     text = read_text_from_file(cale_fisier_txt)
  34.     propozitii = tokenize.sent_tokenize(text)
  35.     nume_fisier = os.path.basename(cale_fisier_txt).split('.')[0] # "30.txt" => split('.') => ["30", "txt"] => [0] => "30"
  36.     chunk = ''
  37.     chunk_size = 5000 # 5KB
  38.     chunk_number = 1
  39.     for propozitie in propozitii:
  40.         if len(chunk.encode('utf-8')) < chunk_size:
  41.             chunk = chunk + " " + propozitie
  42.         else:
  43.             # scriere fisier
  44.             cale_fisier_rezultat = cale_folder_fisiere_impartite + '\\' + nume_fisier + "_" + str(chunk_number) + ".txt" # => "30_1.txt"
  45.             write_to_file(chunk, cale_fisier_rezultat)
  46.             # print("Fisierul {} a fost scris cu succes.".format(nume_fisier + "_" + str(chunk_number) + ".txt"))
  47.             chunk = propozitie
  48.             chunk_number += 1
  49.  
  50. def creare_fisiere(cale_folder_txt, cale_folder_fisiere_impartite):
  51.     """
  52.    Functia itereaza printr-un folder care contine fisiere txt si imparte in 5KB fiecare fisier
  53.    """
  54.     count = 0
  55.     for f in os.listdir(cale_folder_txt):
  56.             if f.endswith('txt'):
  57.                 cale_fisier_txt = cale_folder_txt + "\\" + f
  58.                 imparte_fisiere(cale_fisier_txt, cale_folder_fisiere_impartite)
  59.                 count += 1
  60.             else:
  61.                 continue
  62.     print("Numarul de fisiere modificate: ", count)
  63.  
  64. # cale_folder_txt/30.txt => cale_folder_fisiere_impartite/30_part1.txt
  65. #                        => cale_folder_fisiere_impartite/30_part2.txt
  66.  
  67. def main():
  68.     creare_fisiere("c:\\Folder1", "c:\\Folder1\\fisiere_impartite")
  69.  
  70. if __name__ == '__main__':
  71.     main()
  72.  
  73.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement