-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTextExplorer.py
143 lines (125 loc) · 5.07 KB
/
TextExplorer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
import os
import time
import zipfile
import xml.etree.ElementTree as ET
def read_docx(file_path):
try:
with zipfile.ZipFile(file_path) as zip_file:
xml_content = zip_file.read('word/document.xml')
root = ET.fromstring(xml_content)
namespace = '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}'
text_elements = root.findall('.//' + namespace + 't')
text = ''
for element in text_elements:
text += element.text
return text
except Exception as e:
#print(f"Erro ao ler o arquivo {file_path}: {str(e)}")
return ''
def read_pdf(file_path):
try:
with open(file_path, 'rb') as file:
pdf_content = file.read()
# O formato PDF é binário, então precisamos decodificar o conteúdo
text = ''
for byte in pdf_content:
if 32 <= byte <= 126: # Caracteres ASCII
text += chr(byte)
return text
except Exception as e:
#print(f"Erro ao ler o arquivo {file_path}: {str(e)}")
return ''
def read_pptx(file_path):
try:
with zipfile.ZipFile(file_path) as zip_file:
xml_content = zip_file.read('ppt/slides/slide1.xml')
root = ET.fromstring(xml_content)
namespace = '{http://schemas.openxmlformats.org/drawingml/2006/main}'
text_elements = root.findall('.//' + namespace + 't')
text = ''
for element in text_elements:
text += element.text
return text
except Exception as e:
#print(f"Erro ao ler o arquivo {file_path}: {str(e)}")
return ''
def read_xlsx(file_path):
try:
with zipfile.ZipFile(file_path) as zip_file:
xml_content = zip_file.read('xl/worksheets/sheet1.xml')
root = ET.fromstring(xml_content)
namespace = '{http://schemas.openxmlformats.org/spreadsheetml/2006/main}'
text_elements = root.findall('.//' + namespace + 'v')
text = ''
for element in text_elements:
text += element.text
return text
except Exception as e:
#print(f"Erro ao ler o arquivo {file_path}: {str(e)}")
return ''
def read_csv(file_path):
try:
with open(file_path, 'r') as file:
text = file.read()
return text
except Exception as e:
#print(f"Erro ao ler o arquivo {file_path}: {str(e)}")
return ''
def read_file(file_path):
try:
with open(file_path, 'r') as file:
return file.read()
except Exception as e:
#print(f"Erro ao ler o arquivo {file_path}: {str(e)}")
return ''
def main():
while True:
# Solicita ao usuário o diretório e o termo de busca
folder_path = input("Digite o caminho do diretório onde deseja procurar: ")
search_term = input("Digite o termo que deseja procurar: ")
# Verifica se o diretório existe
if not os.path.isdir(folder_path):
print("O diretório fornecido não é válido. Verifique o caminho e tente novamente.")
continue # Retorna ao início do loop para nova entrada
start_time = time.time()
total_files = 0
files_found = 0
found_files = []
for root, dirs, files in os.walk(folder_path):
for filename in files:
file_path = os.path.join(root, filename)
total_files += 1
if filename.endswith('.docx'):
text = read_docx(file_path)
elif filename.endswith('.pdf'):
text = read_pdf(file_path)
elif filename.endswith('.pptx'):
text = read_pptx(file_path)
elif filename.endswith('.xlsx'):
text = read_xlsx(file_path)
elif filename.endswith('.csv'):
text = read_csv(file_path)
else:
text = read_file(file_path)
if search_term in text:
files_found += 1
found_files.append(file_path)
end_time = time.time()
total_time = end_time - start_time
if found_files:
print("\nCaminhos dos arquivos encontrados:")
for file_path in found_files:
print(file_path)
else:
print("\nNenhum arquivo encontrado com o termo fornecido.")
print(f"\nTempo de execução da pesquisa: {total_time:.2f} segundos")
print(f"Total de arquivos lidos: {total_files}")
print(f"Arquivos encontrados com a palavra '{search_term}': {files_found}")
print("\nPesquisa concluída.")
# Pergunta ao usuário se deseja realizar outra busca
another_search = input("Deseja procurar outra coisa? (s/n): ").strip().lower()
if another_search != 's':
print("Encerrando o programa.")
break # Encerra o loop e o programa
if __name__ == "__main__":
main()