Ir ao conteúdo

Kamuri

Membro Pleno
  • Posts

    212
  • Cadastrado em

  • Última visita

  1. Eu to tentando executar mas não consigo reproduzir o mesmo erro. Executando só recebo "ValueError: Erro executando consulta"
  2. Primeiro você precisa identificar se teu PDF tem o texto codificado lá. Existem PDFs onde não é possível pesquisar texto porque essa informação foi retirada. Qualquer coisa tu pode tentar adaptar um script que fiz faz um tempo: import json import os import PyPDF2 TARGET_FOLDER = "test" os.makedirs(TARGET_FOLDER, exist_ok=True) def save(filename: str, contents: dict | list): """Saves the file to the TARGET_FOLDER in JSON format""" with open(os.path.join(TARGET_FOLDER, filename), "w", encoding="utf-8") as f: j = json.dumps(contents, ensure_ascii=False, indent=4) f.write(j) def parse_text(palavra: str, text: str) -> list[str]: lines = text.split("\n") results = [] for line in lines: if palavra in line: results.append(line) return results def read_file(filename: str) -> None: """Reads, processes and saves the extracted text from the file""" with open(filename, "rb") as f: pdf_file = PyPDF2.PdfReader(f) first_page: PyPDF2.PageObject = pdf_file.pages[0] text = first_page.extract_text() return text filename = "test.pdf" palavra = "kamuri" text = read_file(filename) result = parse_text(palavra, text) save(os.path.basename(filename).replace(".pdf", ".json"), result)
  3. @Swalls Rodando aqui levou cerca de 28 minutos, o que não é muito diferente do copyfile da shutil. Não notei nenhum dos problemas que você mencionou . Mesmo arquivo, de um HDD para outro.
  4. @Swalls consegue enviar esses códigos funcionando? Vai ficar mais fácil pra testar sem eu alterar algo que deveria fazer parte deles. Testei o copyfile do shutil: Um arquivo .zip de 114GiB demorou 22 minutos para ser copiado de um HDD para outro
  5. Interessante, vou fazer uns testes quando tiver tempo, é um comportamento bem estranho.
  6. A primeira vai depender do algoritmo implementado por cada sistema, já que você está chamando comandos do sistema. Na minha opinião ela deve ser a mais rápida, já que a segunda é implementada apenas em Python e a linguagem é conhecida por ser lenta. Se você quiser, pode usar também a função copy da lib shutil. Ou olhar a implementação: https://github.com/python/cpython/blob/main/Lib/shutil.py#L230
  7. Nesse caso, só separando seu código em vários pedaços independentes. Isso que você quer é chamado de "hot reload" ou "hot replacement". Você pode tentar algumas coisas: Separar seu projeto em varios pedaços, ou seja, um servidor rodando seu Client expondo a API para ser acesso por outros. Ou tentar integrar o node-hot-loader no seu projeto.
  8. Tem uma ferramenta muito boa chamada Nodemon, também feita em NodeJS. npm install --save-dev nodemon Exemplo: nodemon ./server.js localhost 8080 Então toda vez que algum arquivo .js fosse modificado, o nodemon iria parar e rodar o codigo novamente.
  9. Na maioria das vezes sim, a não ser que sua hospedagem tenha alguma opção na interface.
  10. Bom dia! Aqui você pega o "value" do elemento selecionado, que retorna uma string: Mas o constructor da sua class espera um HTMLInputElement, por isso o erro. Então ou você muda o tipo no constructor pra string, ou não pega o value do HTMLInputElement antes de passar pro constructor.
  11. Bom dia! Consegue sim! Use o certbot para adicionar seus subdominios e compartilhe o certificado entre seus servidores, ex: sudo certbot certonly --standalone -d test.com -d test.test.com -d abc.test.com --non-interactive --agree-tos --email [email protected] Ou você pode gerar um certificado pra cada subdominio separadamente, vai do que você achar mais fácil.
  12. Não é verdade! Você precisa entender antes como a linguagem e o ambiente de exeução lidam com as variáveis. Em linguagens compiladas, o compilador geralmente é esperto o suficiente para retirar as variáveis inúteis, por ex. Em Python, as vezes as variáveis compartilham o mesmo endereço em memória pra um valor, por ex, todos os números de -5 a 256 já estão em memória. Quando você usa algum número nesse intervalo o interpretador do CPython já pega um valor alocado. Todavia, para números maiores, ele cria um novo objeto. O mesmo com strings, tipo, se você definir duas variáveis com strings iguais o endereço de memória delas vão ser o mesmo! Então independente de quantas variáveis você criar, o uso de memória permanece o mesmo. Fora que é boa prática evitar "valores mágicos", isso atrapalha o desenvolvimento, principalmente se mais de uma pessoa estiver trabalhando no projeto. Você sempre pode adicionar comentário, mas na minha opinião é melhor ter um código claro e limpo do que um código cheio de comentários para explicar coisas simples.
  13. É complicado, se tiver obfuscada já não seria uma boa ideia instalar, já que a pessoa quer esconder algo. Sobre verificar libs muito grandes, você poderia criar um script pra identificar potenciais riscos, como URLs, one-liners, etc e, caso desconfie de algo, rode dentro de um sandbox como uma VM.
  14. @SwallsRealmente, o PyPDF2 é melhor pra editar PDF, pra criar você precisa de conhecimento prévio de como PDFs funcionam. Você pode tentar usar o reportlab, outro modulo pra criação de PDF, tipo: import os from reportlab.lib.pagesizes import A2 from reportlab.pdfgen import canvas def convert_to_pdf(folder_path): arquivos = [os.path.join(folder_path, nome) for nome in os.listdir(folder_path)] arquivos = sorted([x for x in arquivos if "para_pdf" in x]) for arquivo in arquivos: output_name = arquivo[:-4] + ".pdf" pdf_path = os.path.join(folder_path, output_name) c = canvas.Canvas(pdf_path, pagesize=A2) with open(os.path.join(folder_path, arquivo), 'r', encoding='utf-8') as file: content = file.read() c.setFont("Helvetica", 12) lines = content.splitlines() y = 750 for line in lines: c.drawString(30, y, line) y -= 20 c.showPage() c.save() print(f"PDF file saved at {pdf_path}") convert_to_pdf(".")
  15. Deixa eu ver se entendi: Você quer um script que receba um caminho como argumento e apague o arquivo? Se for, é fácil: (_os := __import__("os")) and (_sys := __import__('sys')) and (filename := _sys.argv.pop(-1)) and (exit(1) if filename == _os.path.basename(__file__) else "") or (_os.remove(filename) if _os.path.isfile(filename) else print("Arquivo não existe")) Resultado: ❯ echo "test" > /tmp/test ❯ cat /tmp/test test ❯ python test.py /tmp/test ❯ cat /tmp/test cat: /tmp/test: Arquivo ou diretório inexistente Codigo legivel: import os import sys filename = sys.argv.pop(-1) if filename == os.path.basename(__file__): exit(1) if os.path.isfile(filename): os.remove(filename) else: print("Arquivo não existe") voce consegue expandir isso pra qualquer pasta ou arquivo.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!