-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
63 lines (56 loc) · 2.73 KB
/
main.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
import cPlaca
import mercoSort
from pathlib import Path
def jaExiste(arquivo, n=2):
#Função para checar se já existe um arquivo com o nome "PIVsOrd.piv" e utilizar um nome PIVsOrd(x).piv se for necessário, para não
#misturar diferentes bancos de dados de placas ordenadas que, por ventura, estejam armazenados no mesmo diretório, frutos de usos prévios deste programa.
if Path(arquivo).is_file():
if not Path("PIVsOrd(1).piv").is_file():
#Caso não haja nenhum PIVsOrd(x).piv, um "PIVsOrd(1).piv" será criado.
return "PIVsOrd(1).piv"
else:
#Caso já exista um PIVsOrd(x).piv, será testado se já existe um PIVsOrd(x+1).piv, e mantê-lo se o nome estiver disponível.
if Path(f'PIVsOrd({n}).piv').is_file():
return jaExiste(arquivo, n+1)
else:
return f'PIVsOrd({n}).piv'
else:
#Caso o nome de arquivo testado esteja disponível, retorna o próprio nome testado.
return arquivo
def getArquivoNome():
#Função para buscar o nome do arquivo
print("Insira o nome do arquivo a ser lido (com a extensão)")
print("Obs: Se campo for deixado em branco, o arquivo PIVs.piv será procurado por padrão")
nome = input("Insira o nome do arquivo: ")
if nome == "" or nome == "\n" or nome == None:
return "PIVs.piv"
if Path(nome).is_file():
return nome
else:
print(f'Arquivo {nome} não encontrado, verifique se o nome foi digitado corretamente e se a extensão foi incluída, então tente novamente.\n')
return getArquivoNome()
def OrdenarArquivo(nome, lista):
#Função para ordenar o arquivo inserido pelo usuário.
print(f'Abrindo arquivo {nome}')
try:
with open(nome,'r') as pivs:
#Lendo o arquivo
placa = pivs.readline()
while placa != '' and placa != '\n':
#Adicionando os elementos do arquivo em uma lista como objetos cPlaca
lista.append(cPlaca.cPlaca(placa))
placa = pivs.readline()
print("Ordenando a lista. Por favor, aguarde.")
lista = mercoSort.radixSort(lista)
novoArquivo_Nome = jaExiste("PIVsOrd.piv")
novoArquivo = open(novoArquivo_Nome, 'a')
for i in lista:
#Escrita dos elementos em ordem no novo arquivo.
novoArquivo.write(str(i) + '\n')
novoArquivo.close()
print(f'Novo arquivo com a base de dados de nome {novoArquivo_Nome} criado com sucesso.')
except:
print("Esse arquivo não parece estar formatado corretamente (Uma placa no padrão mercosul por linha). Tente novamente\n")
OrdenarArquivo(getArquivoNome(), lista)
lista = []
OrdenarArquivo(getArquivoNome(), lista)