def touch(arquivo): if arquivo is None: print('touch precisa de um argumento') return try: dados, caminho_destino, nome_arquivo = pega_dados(arquivo) except FileNotFoundError: return if dados.tem(nome_arquivo): index = dados.get_entry(nome_arquivo) dados = Dados(bitmap, fat, index) dados.load(unidade) if dados.is_dir(): print('É um diretório!') return dados.get_dado() # com o get_dado eu estou atualizando o instante de acesso dados.save(unidade) else: index = aloca() dados.add_entry(nome_arquivo, index) dados.save(unidade) dados = Dados(bitmap, fat, index) dados.set(nome_arquivo, '') dados.save(unidade) bitmap.save(unidade) fat.save(unidade) root.save(unidade) pass
def touch(arquivo): if arquivo is None: print('touch precisa de um argumento') return try: dados, caminho_destino, nome_arquivo = pega_dados(arquivo) except FileNotFoundError: return if dados.tem(nome_arquivo): index = dados.get_entry(nome_arquivo) dados = Dados(bitmap, fat, index) dados.load(unidade) if dados.is_dir(): print('É um diretório!') return dados.get_dado( ) # com o get_dado eu estou atualizando o instante de acesso dados.save(unidade) else: index = aloca() dados.add_entry(nome_arquivo, index) dados.save(unidade) dados = Dados(bitmap, fat, index) dados.set(nome_arquivo, '') dados.save(unidade) bitmap.save(unidade) fat.save(unidade) root.save(unidade) pass
def find(diretorio, arquivo): if diretorio is None or arquivo is None: print('find precisa de dois argumentos') return dados, caminho_destino, diretorio = pega_dados(diretorio) if diretorio is not None: if not dados.tem(diretorio): print('Diretório não encontrado') return index = dados.get_entry(diretorio) dados = Dados(bitmap, fat, index) dados.carrega_cabeçalho(unidade) if not dados.is_dir(): print('Não é um diretório') return dados.load(unidade) find_recursive(dados, caminho_destino + [diretorio], arquivo) else: for nome_arquivo in dados.keys(): index = dados.get_entry(nome_arquivo) a = Dados(bitmap, fat, index) a.carrega_cabeçalho(unidade) if a.is_dir(): a.load(unidade) find_recursive(a, caminho_destino + [nome_arquivo], arquivo) else: if a.get_nome() == arquivo: print( '/' + '/'.join(caminho_destino) + '/' + arquivo if type(dados) is not Root else '/'.join( caminho_destino) + '/' + arquivo) bitmap.save(unidade) fat.save(unidade) root.save(unidade)
def find(diretorio, arquivo): if diretorio is None or arquivo is None: print('find precisa de dois argumentos') return dados, caminho_destino, diretorio = pega_dados(diretorio) if diretorio is not None: if not dados.tem(diretorio): print('Diretório não encontrado') return index = dados.get_entry(diretorio) dados = Dados(bitmap, fat, index) dados.carrega_cabeçalho(unidade) if not dados.is_dir(): print('Não é um diretório') return dados.load(unidade) find_recursive(dados, caminho_destino + [diretorio], arquivo) else: for nome_arquivo in dados.keys(): index = dados.get_entry(nome_arquivo) a = Dados(bitmap, fat, index) a.carrega_cabeçalho(unidade) if a.is_dir(): a.load(unidade) find_recursive(a, caminho_destino + [nome_arquivo], arquivo) else: if a.get_nome() == arquivo: print('/' + '/'.join(caminho_destino) + '/' + arquivo if type(dados) is not Root else '/'.join(caminho_destino) + '/' + arquivo) bitmap.save(unidade) fat.save(unidade) root.save(unidade)
def faça_ls(dados): for nome in dados.keys(): index = dados.get_entry(nome) arquivo = Dados(bitmap, fat, index) arquivo.load(unidade) if arquivo.is_dir(): print(arquivo.get_nome(), '/', sep='') print(arquivo.modify) else: print(arquivo.get_nome()) print(arquivo.tamanho) print(arquivo.modify)
def rmdir_recursivo(index, caminho): dados = Dados(bitmap, fat, index) dados.carrega_cabeçalho(unidade) if dados.is_dir(): dados.load(unidade) for arquivos in dados.keys(): index = dados.get_entry(arquivos) rmdir_recursivo(index, caminho + [arquivos]) print('/' + '/'.join(caminho) + '/' + dados.get_nome()) while index != -1: bitmap.set_1(index) index = fat.get(index)
def rmdir_recursivo(index, caminho): dados = Dados(bitmap, fat, index) dados.carrega_cabeçalho(unidade) if dados.is_dir(): dados.load(unidade) for arquivos in dados.keys(): index = dados.get_entry(arquivos) rmdir_recursivo(index, caminho + [arquivos]) print('/' + '/'.join(caminho) + '/' + dados.get_nome()) while index != -1: bitmap.set_1(index) index = fat.get(index)
def faça_ls(dados): for nome in dados.keys(): index = dados.get_entry(nome) arquivo = Dados(bitmap, fat, index) arquivo.load(unidade) if arquivo.is_dir(): print(arquivo.get_nome(), '/', sep='') print(arquivo.modify) else: print(arquivo.get_nome()) print(arquivo.tamanho) print(arquivo.modify)
def find_recursive(dados, caminho_destino, arquivo_procurado): for nome_arquivo in dados.keys(): index = dados.get_entry(nome_arquivo) arquivo = Dados(bitmap, fat, index) arquivo.carrega_cabeçalho(unidade) if arquivo.is_dir(): arquivo.load(unidade) find_recursive(arquivo, caminho_destino + [nome_arquivo], arquivo_procurado) else: if arquivo.get_nome() == arquivo_procurado: print( '/' + '/'.join(caminho_destino) + '/' + arquivo_procurado if type(dados) is not Root else '/'.join( caminho_destino) + '/' + arquivo_procurado)
def find_recursive(dados, caminho_destino, arquivo_procurado): for nome_arquivo in dados.keys(): index = dados.get_entry(nome_arquivo) arquivo = Dados(bitmap, fat, index) arquivo.carrega_cabeçalho(unidade) if arquivo.is_dir(): arquivo.load(unidade) find_recursive(arquivo, caminho_destino + [nome_arquivo], arquivo_procurado) else: if arquivo.get_nome() == arquivo_procurado: print('/' + '/'.join(caminho_destino) + '/' + arquivo_procurado if type(dados) is not Root else '/'.join(caminho_destino) + '/' + arquivo_procurado)
def percorre_caminho(caminho_destino): if len(caminho_destino) == 0: return root nome_diretorio = caminho_destino.pop(0) index = root.get_entry(nome_diretorio) while len(caminho_destino): dados = Dados(bitmap, fat, index) dados.load(unidade) if not dados.is_dir(): print('Não é um diretório') raise NotADirectoryError index = dados.get_entry(caminho_destino.pop(0)) dados = Dados(bitmap, fat, index) dados.load(unidade) return dados
def percorre_caminho(caminho_destino): if len(caminho_destino) == 0: return root nome_diretorio = caminho_destino.pop(0) index = root.get_entry(nome_diretorio) while len(caminho_destino): dados = Dados(bitmap, fat, index) dados.load(unidade) if not dados.is_dir(): print('Não é um diretório') raise NotADirectoryError index = dados.get_entry(caminho_destino.pop(0)) dados = Dados(bitmap, fat, index) dados.load(unidade) return dados
def cat(arquivo): if arquivo is None: print('cat precisa de um argumento') return try: dados, caminho_destino, nome_arquivo = pega_dados(arquivo) except FileNotFoundError: return if dados.tem(nome_arquivo): index = dados.get_entry(nome_arquivo) dados = Dados(bitmap, fat, index) dados.load(unidade) print(dados.get_dado()) dados.save(unidade) bitmap.save(unidade) fat.save(unidade) root.save(unidade) pass
def cat(arquivo): if arquivo is None: print('cat precisa de um argumento') return try: dados, caminho_destino, nome_arquivo = pega_dados(arquivo) except FileNotFoundError: return if dados.tem(nome_arquivo): index = dados.get_entry(nome_arquivo) dados = Dados(bitmap, fat, index) dados.load(unidade) print(dados.get_dado()) dados.save(unidade) bitmap.save(unidade) fat.save(unidade) root.save(unidade) pass
def df(): quantidade_diretórios = 1 quantidade_arquivos = 0 espaço_livre = 99940000 espaço_desperdiçado = 224 # 224 B desperdiçado nos metadados pilha = [] # Tratamento especial para o root for nome_arquivo in root.keys(): index = root.get_entry(nome_arquivo) arquivo = Dados(bitmap, fat, index) arquivo.load(unidade) if arquivo.is_dir(): quantidade_diretórios += 1 # 328 bytes para o cabeçalho do diretório e cada linha ocupa 257 bytes espaço_desperdiçado += 4000 - arquivo.get_len_tabela() * 257 - 328 pilha.append(arquivo) else: quantidade_arquivos += 1 espaço_desperdiçado += 4000 - arquivo.get_tamanho( ) - 332 # 332 bytes para o cabeçalho do diretório espaço_livre -= 4000 while len(pilha): dado = pilha.pop() for nome_arquivo in dado.keys(): index = dado.get_entry(nome_arquivo) arquivo = Dados(bitmap, fat, index) arquivo.load(unidade) if arquivo.is_dir(): quantidade_diretórios += 1 # 328 bytes para o cabeçalho do diretório e cada linha ocupa 257 bytes espaço_desperdiçado += 4000 - dado.get_len_tabela() * 257 - 328 pilha.append(arquivo) else: quantidade_arquivos += 1 espaço_desperdiçado += 4000 - dado.get_tamanho( ) - 332 # 332 bytes para o cabeçalho do diretório espaço_livre -= 4000 print('quantidade diretórios:', quantidade_diretórios) print('quantidade arquivos:', quantidade_arquivos) print('espaço livre:', espaço_livre) print('espaço desperdiçado:', espaço_desperdiçado) # 224 B desperdiçado nos metadados)
def ls(diretorio): if diretorio is None: print('ls precisa de um argumento') return dados, caminho_destino, nome_arquivo = pega_dados(diretorio) if nome_arquivo is None: faça_ls(dados) else: index = dados.get_entry(nome_arquivo) dados = Dados(bitmap, fat, index) dados.carrega_cabeçalho(unidade) if dados.is_dir(): dados.load(unidade) faça_ls(dados) else: print('É um arquivo.') bitmap.save(unidade) fat.save(unidade) root.save(unidade)
def ls(diretorio): if diretorio is None: print('ls precisa de um argumento') return dados, caminho_destino, nome_arquivo = pega_dados(diretorio) if nome_arquivo is None: faça_ls(dados) else: index = dados.get_entry(nome_arquivo) dados = Dados(bitmap, fat, index) dados.carrega_cabeçalho(unidade) if dados.is_dir(): dados.load(unidade) faça_ls(dados) else: print('É um arquivo.') bitmap.save(unidade) fat.save(unidade) root.save(unidade)
def df(): quantidade_diretórios = 1 quantidade_arquivos = 0 espaço_livre = 99940000 espaço_desperdiçado = 224 # 224 B desperdiçado nos metadados pilha = [] # Tratamento especial para o root for nome_arquivo in root.keys(): index = root.get_entry(nome_arquivo) arquivo = Dados(bitmap, fat, index) arquivo.load(unidade) if arquivo.is_dir(): quantidade_diretórios += 1 # 328 bytes para o cabeçalho do diretório e cada linha ocupa 257 bytes espaço_desperdiçado += 4000 - arquivo.get_len_tabela() * 257 - 328 pilha.append(arquivo) else: quantidade_arquivos += 1 espaço_desperdiçado += 4000 - arquivo.get_tamanho() - 332 # 332 bytes para o cabeçalho do diretório espaço_livre -= 4000 while len(pilha): dado = pilha.pop() for nome_arquivo in dado.keys(): index = dado.get_entry(nome_arquivo) arquivo = Dados(bitmap, fat, index) arquivo.load(unidade) if arquivo.is_dir(): quantidade_diretórios += 1 # 328 bytes para o cabeçalho do diretório e cada linha ocupa 257 bytes espaço_desperdiçado += 4000 - dado.get_len_tabela() * 257 - 328 pilha.append(arquivo) else: quantidade_arquivos += 1 espaço_desperdiçado += 4000 - dado.get_tamanho() - 332 # 332 bytes para o cabeçalho do diretório espaço_livre -= 4000 print('quantidade diretórios:', quantidade_diretórios) print('quantidade arquivos:', quantidade_arquivos) print('espaço livre:', espaço_livre) print('espaço desperdiçado:', espaço_desperdiçado) # 224 B desperdiçado nos metadados)
def rmdir(diretorio): if diretorio is None: print('rmdir precisa de um argumento') return try: dados, caminho_destino, nome_diretorio = pega_dados(diretorio) except FileNotFoundError: return if dados.tem(nome_diretorio): index = dados.get_entry(nome_diretorio) arquivo = Dados(bitmap, fat, index) arquivo.load(unidade) if not arquivo.is_dir(): print('Não é diretório') return dados.del_entry(nome_diretorio) dados.save(unidade) for arquivos in arquivo.keys(): index = arquivo.get_entry(arquivos) dado = Dados(bitmap, fat, index) dado.load(unidade) if dado.is_dir(): rmdir_recursivo(index, caminho_destino + [nome_diretorio]) else: while index != -1: bitmap.set_1(index) index = fat.get(index) print(nome_diretorio, '%s removido%s com sucesso' % ('foram', 's') if len(dados.keys()) else '%s removido%s com sucesso' % ('foi', '')) else: print('Diretório %s não existe' % nome_diretorio) bitmap.save(unidade) fat.save(unidade) root.save(unidade)
def rmdir(diretorio): if diretorio is None: print('rmdir precisa de um argumento') return try: dados, caminho_destino, nome_diretorio = pega_dados(diretorio) except FileNotFoundError: return if dados.tem(nome_diretorio): index = dados.get_entry(nome_diretorio) arquivo = Dados(bitmap, fat, index) arquivo.load(unidade) if not arquivo.is_dir(): print('Não é diretório') return dados.del_entry(nome_diretorio) dados.save(unidade) for arquivos in arquivo.keys(): index = arquivo.get_entry(arquivos) dado = Dados(bitmap, fat, index) dado.load(unidade) if dado.is_dir(): rmdir_recursivo(index, caminho_destino + [nome_diretorio]) else: while index != -1: bitmap.set_1(index) index = fat.get(index) print( nome_diretorio, '%s removido%s com sucesso' % ('foram', 's') if len(dados.keys()) else '%s removido%s com sucesso' % ('foi', '')) else: print('Diretório %s não existe' % nome_diretorio) bitmap.save(unidade) fat.save(unidade) root.save(unidade)