Jump to content

Thanael

Pessoal da TecnoSpeed
  • Contagem de Conteúdo

    217
  • Ingressou

  • Última visita

  • Dias Ganhos

    28

Community Answers

  1. Thanael's publicar in Python Kivy Modularização py e kv was marked as the answer   
    Olá @fenbasso.

    Não entendo muito bem como ocorre essa chamada do arquivo .kv. 
    Pesquisando brevemente sobre o tema encontrei algo que possa lhe ajudar...
    How to load .kv files? [closed]
    No tópico ele realiza a importação de kv files da seguinte forma. from kivy.lang import Builder Builder.load_file('kivi.kv') Aí basta passar o caminho de seus arquivos.
    Exemplo: tela2.kv, tela3.kv e etc.
    Recomendo olhar a própria documentação da biblioteca sobre isso em:
    Kivy - Builder tem uma parte específica que explica sobre isso

     
    Enfim, recomendo ir testando e procurando para verificar como resolver isso, por não conhecer a biblioteca infelizmente não consigo ajudar de forma mais precisa.
  2. Thanael's publicar in Dá pra automatizar Extrato Bancário Santander com Python? was marked as the answer   
    Bom dia @alessandro.cardoso dando uma breve olhada é possivel sim, o banco Santander possui algumas APIs mesmo, segue abaixo os links
    Contas - Saldo e extrato API Saldo e Extrato Se fuçar e realizar os testes acredito que é possível realizar o que necessita.
  3. Thanael's publicar in Criei um programa de cronômetro com erro na contagem regressiva. O que está errado? was marked as the answer   
    Olá @anny karolliny raquebaque tudo bem ?
    Olhando seu código só faltou ajustar o While number > 0 para >= 0...
    Pois de acordo com seu código a lógica é:
    ENQUANTO número_digitado for maior que 0 printar o Número Diminuir Perceba que quando chegar no número 1 ele não irá para próxima iteração. Pois, o próximo número vai ser 0 e como 0 não é maior que 0 ele não irá printar.
    Segue abaixo o ajuste
    # take the number as input number = int(input()) # use a while loop for the countdown while number >= 0: print(number) number -= 1 print("Fim da contagem regressiva!") Dessa forma vai funcionar tranquilamente, essas coisas tendem a passar despercebidas mesmo haha 😅
  4. Thanael's publicar in Programa que procura por pautas was marked as the answer   
    Olá @ctrlah tudo bem?

    Segue abaixo algumas abordagens que pode lhe auxiliar.
    Utilizar alguma API de IA (Inteligencia Artificial) como por exemplo ChatGPT
    É relativamente simples, porém provavelmente não terá informações atualizadas ou tão confiáveis...
      Utilizar abordagens de Web Scraping
    Pode utilizar uma abordagem de Web Scraping para obter os dados da pesquisa do google refrente ao que deseja. Ou criar extrações de dados de sites de noticias referentes ao que deseja.
    Particularmente acredito que essa abordagem seja mais viável adaptável as suas necessidades Segue abaixo algumas ideias de utilização de Web Scraping
    Obter as manchetes mais recentes sobre o que deseja.  Criar extrações de dados de determinados sites de notícias sobre o tema desejado.  OBS: Tenho uma postagem introdutória sobre este tema aqui em Você já ouviu falar em WebScraping?
    Espero que isso lhe ajude a entender melhor o que precisa e quais os caminhos para executar isso. De qualquer forma estou disposto para auxiliar se tiver mais dúvidas.
  5. Thanael's publicar in Banco MySQL Onde estou errando? was marked as the answer   
    Uma dica é você tentar conectar nele através de um SGBD padrão (Dbeaver, MySQL) ou qualquer outro só para ir testando a conexão por ser mais visível e fácil.
    Encontrei algo relacionado a seu problema em Conexão com banco de dados MYSQL hospedado no KingHost aparentemente a porta é 3306, tenta adicionar ela e testar aí. 
    Acabei de testar via Dbeaver e realmente é a PORT 3306, recebendo somente o erro aqui por conta das credenciais. Então realiza a conexão novamente ali adicionando esse por 3306 conforme string de conexão passei nos comentários anteriores.
     

  6. Thanael's publicar in Python e Selenium was marked as the answer   
    Olá @jorgepedro7 tudo bem ? 

    Existem inúmeras formas de obter o elemento, vendo que já tentou algumas mais populares recomendo mudar sua abordagem.
    Tenta utilizar uma abordagem voltada a pegar o próprio <button> pelo.
    driver.find_element(By.TAG_NAME, 'button') Uma dica é verifica o caminho do botão, as vezes é mais simples pegar o elemento PAI e através dele achar o botão...
    Exemplo
    <div id='div_button'> <button> Click here </button> </div> Perceba que somente pelo <button> é complicado visto que ele não tem identificador como ID, Class etc. Portanto é mais simples obtermos o elemento pai (DIV) que possui um identificador e através dele verificar os botões que existem. 
    Outra dica é se existir mais de um botão pode fazer um for e simplesmente verificar o texto do botão para selecionar o que deseja.
     
    Espero que essa ideia de abordagem possa lhe auxiliar, caso contrário sugiro mandar o trecho do HTML que contém o botão, deixando mais fácil para ajudá-lo. 
  7. Thanael's publicar in Calculadora em phyton was marked as the answer   
    Olá @pedrohenrique tudo bem?

    Uma maneira simples de corrigir isso é usando a tratativa de erros com o Try/Except.  Aí funcionará como esperado segue abaixo o código.
    Operação = input ("""Por favor digite o operador que deseja: + Para adição - Para subtração * Para multiplicação / Para divisão\n""") try: # Pode deixar INT caso não queira casas decimais num_1 = float(input('Número 1:')) num_2 = float(input('Número 2:')) if Operação == '+': print('{} + {} = {}'.format(num_1, num_2, num_1 + num_2)) elif Operação == '*': print('{} * {} = {}'.format(num_1, num_2, num_1 * num_2)) elif Operação == '-': print('{} - {} = {}'.format(num_1, num_2, num_1 - num_2)) elif Operação == '/': print('{} / {} = {}'.format(num_1, num_2, num_1 / num_2)) else: print ('Acho que você errou, tente novamente!') except: print('Digite apenas números') Essa é uma das maneiras de realizar isso, lembrando que existem N outras.
    Espero ter te ajudado caso contrario estou a disposição.
  8. Thanael's publicar in Como tratar um arquivo que vem de uma API was marked as the answer   
    Bom dia.
    Então o -1 é o índice para o Slicing (Esse número limita o que vamos visualizar na string)
    Ele segue o padrão de variavel[ inicio : fim : step], podendo ser número positivo ou negativo.
    Inicio vai definir de onde queremos que o texto inicie. Fim vai definir até onde querermos que o texo vá. Step vai definir que a quantidade será de N em N caracteres. Aqui uma imagem para facilitar isso.
    Sugiro ler arr[0:3] como "quero mostrar o texto que inicia da casa 0 e vai até a casa 3", ou seja, PRE
    Segue abaixo um artigo que explicar isso muito bem também. Python Strings Slicing esse slicing pode ser usado também em listas, sendo muito útil.
    Espero que isso tenha esclarecido um pouco mais sobre o porquê utilizei o - 1, pois não queria que o texto fosse até o fim e sim somente até o ] que está na posição (-1) no texto.
     
  9. Thanael's publicar in PANDAS read_excel não consegue ler arquivo xlsx was marked as the answer   
    Bom dia @ezanardo.
    Poderia mandar um print do arquivo excel ? (Pode ocultar os valores se quiser)
    Provavelmente o Pandas não está conseguindo entender uma parte da Planilha para conseguir criar o DataFrame.
    Uma alternativa é ler os arquivos por outra biblioteca e após ter a estrutura correta criar o DataFrame. 
    Aqui neste artigo mostra algumas formas de ler Excel além do pandas
    Abrindo arquivos Excel em Python Espero que isso lhe ajude, caso contrário, com mais informações vou conseguir lhe auxiliar de forma mais assertiva. 
  10. Thanael's publicar in Ler arquivos em um diretório was marked as the answer   
    @sirsmart é possivel sim segue abaixo o código.
    import os import datetime import pandas as pd # Pasta dos arquivos caminho = '/home/ec2-user/etls/' # Obter todos os arquivos da pasta files = os.listdir(caminho) files.sort() # Teremos uma lista com todos os arquivos .txt dict_arquivos = { 'file': [], 'created_at': [] } for file in files: #Verificar se é TXT if '.txt' in file: # Obter a data de criação em timestamp e converter para Date timestamp = os.path.getmtime(f"{caminho}{file}") created_at = datetime.datetime.fromtimestamp(timestamp).date() # Alimentar o Dicionario dict_arquivos['file'].append(file) dict_arquivos['created_at'].append(created_at) # Criar o DataFrame com esses dados df_file = pd.DataFrame(dict_arquivos) # Ordernar os dados pela data de criação df_file = df_file.sort_values(by =['created_at'])
    Essa foi a forma que construí aqui o algoritmo, lembrando que há formas mais rápidas, mas essa foi a que consegui nesse tempo, espero que lhe ajude.
    Artigo consultado para obter a data de criação: Python Get File Creation and Modification DateTime
    Espero que seja isso que precise, caso contrario estou a disposição para ajudar.
  11. Thanael's publicar in Acrescentando dados no dataframe was marked as the answer   
    Olá @sirsmart tudo bem?

    Consegue mandar a mensagem de erro que está recebendo ? 

    Olhando seu código não encontrei aonde foi definido a variável data... Julgo que seria algo como 
    data = pd.DataFrame() Se for isso quando realizar o data += resultado isso não irá funcionar... sempre que precisar por exemplo adicionar a cada iteração dados nesse DataFrame recomendo o seguinte.
    data = pd.DataFrame() while: .... .... data = pd.concat([data, resultado], ignore_index=True) data.to_excel("testeapi.xlsx", index=False, sheet_name='Dados') Utilize o pd.concat ao invez do +=, testa alterar e diz se deu certo seu código.
    Espero que isso resolva o que está tentando realizar.
  12. Thanael's publicar in Pegar coluna do JSON was marked as the answer   
    Pela imagem, essa coluna está trazendo a lista de registros, uma forma de tratar ela é transformando a lista em um novo DataFrame (haha) 
    Segue abaixo uma ideia de código.
    df_principal = pd.DataFrame() for index, row in df.iterrows(): # Criar o DataFrame desta lista df_row = pd.DataFrame(row['statusHistory']) # Adicionar as colunas do DF principal a este novo df_row['id'] = row['id'] # Juntar ao DF principal df_principal = pd.concat([df_principal, df_row], ignore_index=True) Em resumo a lógica e percorrer pelo DF principal, criar um novo DataFrame do statusHistory de cada linha e juntar tudo isso num dataframe.
    Espero que isso lhe auxilie de alguma forma.
  13. Thanael's publicar in Normalizar Json was marked as the answer   
    Boa tarde @sirsmart.

    Isso ocorre pelo motivo da coluna project ser uma coluna do tipo OBJECT (JSON) ou seja ela armazena mais registros, por conta disso irá armazenar desta forma mesmo no Excel.
    Para resolver isso precisará "Desmontar" todas essas colunas que armazenam jsons, o ideal é ir utilizando o pandas.json_normalize até não ter mais registros desta forma em seus dataframe.
  14. Thanael's publicar in Reconhecimento de fala com Speech Recognitione Whisper was marked as the answer   
    Olá @lhnask tudo bem ?
    Nunca utilizei essas bibliotecas mas pelo erro que comentou de "FileNotFoundError: [WinError 2] " significa que a biblioteca de transcrição não está achando o arquivo.
    Segue abaixo o que pode estar acontecendo.
    No momento de passar o caminho do arquivo sugiro passar o caminho completo sempre.
    Exemplo # ao invez de usar arquivo.wav use file = r"C:\Users\thanael.butewicz\Documents\arquivo.wav" #ou file = "C:\\Users\\thanael.butewicz\\Documents\\arquivo.wav" Sugiro sempre usar o caminho completo, sanou muitos problemas que tive semelhante a isso. 
    Tenta realizar o teste ai comenta se deu certo ou se esse continuou para buscarmos outra possível solução.
  15. Thanael's publicar in Defaulting to user installation because normal site-packages is not writeable was marked as the answer   
    Bom dia @Gustavo Kasprowicz tudo bem ?
    Que estranho isso 🤔, acabei de rodar a instalação e o import aqui é foi normal...
    Aparentemente esse seu problema ai ocorre devido a você não ter permissão para instalar as bibliotecas. Segue abaixo um artigo onde uma pessoa teve o mesmo problema How to resolve "normal site-packages is not writable" in Python e/ou pip/python: normal site-packages is not writeable
    Algumas soluções
    Criar ambientes virtuais  (virtualenv)
      Caso você use linux pode estar tentando "forçar" a instalação através do comando.
    sudo apt install python-package-name  # for apt package manager
      Especificar o usuario na instalação através do
    pip install package-name --user Creio que a solução mais adequada seja usar o seguinte comando no CMD na hora de instalar.
    python3 -m pip install [package_name] #ou python -m pip install [package_name] # Exemplo python -m pip install xmltodict Sugiro testar e após isso comentar aqui se funcionou, caso não funcione procuramos outra solução. 
  16. Thanael's publicar in ChromeDriver: Erro ao importar 'selenium.webdriver.Chrome': Como resolver? was marked as the answer   
    Olá @Endel Naiva tudo bem ?
    Recentemente realizei alguns estudos testando o Selenium e tive um problema bem semelhante, por conta de não ter instalado o WebDriver do Chrome na máquina...
    Porém existe uma maneira simples de contar isso via código. 
    Segue abaixo a forma com a qual eu configuro o Selenium nos meus scripts, sugiro testar ela e ver se deu certo.
    from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By from selenium.webdriver.support.select import Select from selenium.webdriver import ActionChains import pandas as pd options = Options() options.add_experimental_option("detach", True) # Aqui ele instala o WebDriver toda vez driver = webdriver.Chrome(service = Service(ChromeDriverManager().install()), options = options) # A partir daqui usar normal como preferir driver.get('https://statusinvest.com.br/acoes/smto3') time.sleep(2) Sugiro testar com esse código, caso mesmo assim não funcione, peço que me envie as mensagens de erro para podermos lhe auxiliar novamente. 
  17. Thanael's publicar in Melhoria de Código Python was marked as the answer   
    Olá @Douglas Michel Reis tudo bem? 

    Quando eu preciso realizar essas atividades geralmente utilizo a biblioteca Pandas para consultar, manipular e inserir dados nos respectivos banco de dados.
    Na teoria isso que está tentando fazer não deveria demorar, vou lhe mandar uma estrutura de código para realizar isso ai você testa.
    from sqlalchemy import create_engine # Criar a conexão com o PostgreSQL import pyodbc import pandas as pd # Criar as conexões com os bancos conexao_postgres = create_engine('postgresql://{user}:{password}@{host}:{port}/{db}'.format( user='xxx', password='xxx', host='xxx', port='xxx', db='xxx', )) conexao_sql_server = pyodbc.connect( # Driver que será utilizado na conexão 'DRIVER={ODBC Driver 17 for SQL Server};' # IP ou nome do servidor. 'SERVER=192.168.100.178\SQLEXPRESS;' 'PORT=1433;' # Banco que será utilizado. 'DATABASE=PythonMSSQL;' 'UID=xxx;' 'PWD=xxx') # Escrever o SQL select = ''' select * from tabela ''' # Inserir no SQL SERVER df = pd.read_sql(select, conexao_postgres) df.to_sql('nome_da_tabela',conexao_sql_server, if_exists = 'replace', index = False) Vou deixar também alguns links úteis que possam lhe ajudar.
    pd.read_sql: Obter os dados do Banco de dados  pd.to_sql: Inserir o DataFrame em um Banco de dados Espero que isso possa lhe auxiliar, basicamente só precisa criar as conexões com os bancos e obter e inserir os dados através do Pandas (Biblioteca). 
    Estou a disposição para lhe ajudar no que precisar.
  18. Thanael's publicar in Download das fotos do Instagram was marked as the answer   
    Olá @ENSS tudo bem ? 

    Olhando aqui a documentação https://instaloader.github.io/module/instaloader.html consegui encontrar alguns pontos que lhe ajudem. 

    1° Para realizar somente o download das imagens será necessário você ajustar alguns parâmetros ali em seu código adicionando o parâmetro save_metadata = False, isso fará com que não seja baixado os arquivos .json.
    Também será necessário ajustar o parâmetro  post_metadata_txt_pattern  de None  para str() para não realizar o download dos arquivos .txt.

    Resumindo adicione esses dois parâmetros que coloquei abaixo no Instaloader ali do seu código 
    save_metadata=False, post_metadata_txt_pattern=str(),
    2° Agora para limitar o número de download, não consegui encontrar nada sobre isso na documentação.... Uma sugestão seria fazer outro processo para deixar na pasta somente o número de processos que deseja... 

    Enfim espero que isso lhe ajude de alguma forma, caso contrário estou a disposição para lhe ajudar.
×
×
  • Create New...