import docx import sys import os def convert_docx_to_txt(input_path): # Sprawdzenie czy plik istnieje if not os.path.exists(input_path): print(f"Błąd: Plik '{input_path}' nie istnieje.") return # Sprawdzenie rozszerzenia pliku if not input_path.lower().endswith('.docx'): print(f"Info: Plik '{input_path}' nie jest plikiem .docx, pomijanie.") return try: # Wczytanie dokumentu doc = docx.Document(input_path) full_text = [] # Wyciąganie tekstu z każdego akapitu for para in doc.paragraphs: full_text.append(para.text) # Łączenie tekstu znakami nowej linii result = "\n".join(full_text) # Tworzenie nazwy pliku wyjściowego (zmiana rozszerzenia na .txt) output_path = os.path.splitext(input_path)[0] + ".txt" # Zapis do pliku tekstowego z kodowaniem UTF-8 with open(output_path, "w", encoding="utf-8") as f: f.write(result) print(f"Sukces! Tekst został zapisany w: {output_path}") except Exception as e: print(f"Wystąpił błąd podczas konwersji pliku {input_path}: {e}") def process_directory(directory_path): for root, dirs, files in os.walk(directory_path): for file in files: if file.lower().endswith(('.docx', '.doc')): file_path = os.path.join(root, file) if file.lower().endswith('.doc'): print(f"Info: Konwersja plików .doc nie jest wspierana w tej wersji. Plik: {file_path}") else: convert_docx_to_txt(file_path) if __name__ == "__main__": # Obsługa argumentu z linii poleceń if len(sys.argv) > 1: path_arg = sys.argv[1] if os.path.isdir(path_arg): process_directory(path_arg) elif os.path.isfile(path_arg): convert_docx_to_txt(path_arg) else: print(f"Błąd: Podana ścieżka '{path_arg}' nie jest ani plikiem, ani katalogiem.") else: path_input = input("Podaj nazwę pliku .docx lub ścieżkę do katalogu: ") if os.path.isdir(path_input): process_directory(path_input) elif os.path.isfile(path_input): convert_docx_to_txt(path_input) else: print(f"Błąd: Podana ścieżka '{path_input}' nie jest ani plikiem, ani katalogiem.")