Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import threading
- import tkinter as tk
- from tkinter import scrolledtext
- from datetime import datetime
- def generate_unique_filename():
- """Gera um nome único para o arquivo .txt com base na data e hora."""
- timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
- return f"file_list_{timestamp}.txt"
- def get_file_size(file):
- """Obtém o tamanho do arquivo em bytes."""
- try:
- return os.path.getsize(file)
- except OSError:
- return 0
- def format_size(bytes_size):
- """Formata o tamanho do arquivo em uma string legível."""
- for unit in ['B', 'KB', 'MB', 'GB', 'TB']:
- if bytes_size < 1024.0:
- return f"{bytes_size:.2f} {unit}"
- bytes_size /= 1024.0
- def list_files():
- """Função para listar os arquivos da pasta atual, incluindo tamanhos, e salvar em um arquivo."""
- try:
- files = os.listdir(".")
- text_area.delete(1.0, tk.END) # Limpar a área de texto
- total_size = 0 # Para calcular o tamanho total dos arquivos
- file_list_with_sizes = []
- # Montar a lista com nomes e tamanhos
- for file in files:
- if os.path.isfile(file):
- size = get_file_size(file)
- total_size += size
- file_list_with_sizes.append(f"{file} - {format_size(size)}")
- # Mostrar arquivos na TextArea
- for line in file_list_with_sizes:
- text_area.insert(tk.END, line + "\n")
- # Adicionar tamanho total ao final
- total_size_formatted = format_size(total_size)
- total_line = f"\nTamanho total: {total_size_formatted}"
- text_area.insert(tk.END, total_line)
- # Salvar lista em um arquivo .txt
- filename = generate_unique_filename()
- with open(filename, "w", encoding="utf-8") as f:
- f.write("\n".join(file_list_with_sizes))
- f.write(total_line)
- except Exception as e:
- text_area.insert(tk.END, f"\nErro: {str(e)}")
- def on_button_click():
- """Função que inicia a thread para listar os arquivos."""
- threading.Thread(target=list_files, daemon=True).start()
- # Configuração da Janela
- root = tk.Tk()
- root.title("Listador de Arquivos com Tamanhos")
- # Centralizar janela
- window_width = 800
- window_height = 600
- screen_width = root.winfo_screenwidth()
- screen_height = root.winfo_screenheight()
- x_cordinate = int((screen_width / 2) - (window_width / 2))
- y_cordinate = int((screen_height / 2) - (window_height / 2))
- root.geometry(f"{window_width}x{window_height}+{x_cordinate}+{y_cordinate}")
- # Área de Texto com Scroll
- text_area = scrolledtext.ScrolledText(root, wrap=tk.WORD, width=80, height=30)
- text_area.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)
- # Botão
- button = tk.Button(root, text="Listar Arquivos", command=on_button_click)
- button.pack(pady=10)
- # Executar o Programa
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement