69 lines
2.4 KiB
Python
69 lines
2.4 KiB
Python
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.")
|
|
|