-
Notifications
You must be signed in to change notification settings - Fork 1
/
filedirectorydialog.py
138 lines (108 loc) · 4.1 KB
/
filedirectorydialog.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
import os
from pathlib import Path
from tkinter import Tk
from tkinter.filedialog import askopenfilename, askdirectory
# Configuração da tela de seleção de arquivo
def TkinterConfig(window, title):
window.title(title)
window.overrideredirect(True)
window.geometry('0x0+0+0')
window.transient()
window.focus_force()
window.withdraw() # Isto torna oculto a janela principal
window.attributes("-topmost", True)
return window
# A função "SelectFile" seleciona arquivo
def SelectFile():
root = TkinterConfig(Tk(), "Select File")
# seleciona um arquivo
selectedFile = askopenfilename(parent=root, title=root.title())
if len(selectedFile) == 0:
return False
else:
return selectedFile # retorna o arquivo selecionado
# A função "SelectDirectory" seleciona pasta
def SelectDirectory():
root = TkinterConfig(Tk(), "Select Directory")
# seleciona um diretório
selectedDirectory = askdirectory(parent=root, title=root.title())
if len(selectedDirectory) == 0:
return False
else:
return selectedDirectory # retorna o diretório selecionado
# A função "createFile" cria um arquivo ".txt"
def createFile(directory):
while True:
data = input("\nConteúdo do arquivo (máximo de 128 caracteres)\n"
"Para finalizar essa operação digite 0 (zero)\n"
"Escreva aqui: ")
if data == "0":
return False
elif len(data) == 0 or len(data) > 128 or not data:
print("\n>>> Para a criação do arquivo é preciso ter no mínimo 1 caractere e no máximo 128 caracteres.")
else:
break
if Exists(directory):
file_path = directory + "/default.txt"
contador = 0
while True:
if Exists(file_path):
file_path = directory + f"/default{contador}.txt"
contador += 1
else:
break
with open(file_path, "wb") as fileOutput:
fileOutput.write(bytes(data, "UTF-8"))
return True
else:
print(f"\n>>> O Diretório '{os.path.basename(directory)}' pode ter sido Excluído (ou modificado).", end="")
return False
# A função "ToBackupFile" faz backup de arquivos
def ToBackupFile(file):
if Exists(file):
with open(file, "rb") as backupFile:
return backupFile.read()
"""
A função "FileValidation" faz a validação do arquivo selecionado e
retorna o caminho do arquivo de encriptação ou decriptação.
"""
def FileValidation(option_input, chosenFile, fileName):
if option_input == 1:
if '.crypto' in chosenFile:
print("\n>>> Arquivos '.crypto' não podem ser Criptografados!")
return ""
else:
return chosenFile + ".crypto"
elif option_input == 2:
# pega o caminho do arquivo até o penúltimo sufixo (sem o '.crypto')
file_suffix = Path(fileName).suffix
if not file_suffix == '.crypto':
print("\n>>> O arquivo '{}' não está Criptografado!".format(fileName))
return ""
else:
return chosenFile.replace(".crypto", "")
"""
A função "ReplaceExistingFileInput" verifica se o arquivo de encriptação ou
decriptação já existe, se existir pergunta se deseja substituí-lo.
"""
def ReplaceExistingFileInput(file, fileName):
if Exists(file):
print(f"\n>>> O arquivo '{fileName}' já Existe!\n")
while True:
replaceFile_input = int(input("\nDeseja Substituí-lo?\n>> [1] para Sim\n>> [0] para Não\nR: "))
if replaceFile_input == 1:
return 1
elif replaceFile_input == 0:
return 0
else:
print("\n>>> Valor Inválido!")
else:
return 3
# A função "Exists" verifica se um arquivo ou diretório já existe neste mesmo caminho
def Exists(path):
path_exists = os.path.exists(path)
return path_exists
# A função "FileName" retorna o nome do arquivo com sufixo
def FileName(file):
fullName = file[file.rfind("/")+1:]
return fullName