Python3.5 - Import multiple files from a folder

1

I have the following code:

__author__ = 'Jones_Santos'
# !/usr/bin/python3
import os
from __init__ import mycursor, connection
import csv
import os
from datetime import datetime, date, timedelta, datetime

# Caminho do arquivo a ser importado
caminho_arquivo = './arquivos/analitico_carga_aedu_FC_17122017.csv'
nome_arquivo = os.path.basename('./arquivos/analitico_carga_aedu_FC_17122017.csv')


# ----------- Insere o nome do arquivo que está sendo importado no banco de dados
def inserir_nome_arquivo():
    data_importacao = datetime.now().date()
    query_inserir_nome_arquivo = ("INSERT IGNORE INTO arquivo "
                                  "(nome_arquivo, data_import) "
                                  "VALUES (%(nome_arquivo)s, %(data_import)s)")
    dados_nome_arquivo = {
        'nome_arquivo': nome_arquivo,
        'data_import': data_importacao,
    }
    mycursor.execute(query_inserir_nome_arquivo, dados_nome_arquivo)
    connection.commit()


query = 'SELECT id_arquivo FROM arquivo WHERE nome_arquivo = %(nome_arquivo)s'
criterios = {
    'nome_arquivo': nome_arquivo,
}
mycursor.execute(query, criterios)
for id_arquivo in mycursor:
    id_arquivos = int(("{}".format(id_arquivo).replace(',', '').replace('(', '').replace(')', '')))


def ler_e_inserir_arquivo_batimento():
    with open(caminho_arquivo, newline='', encoding="latin-1") as arquivo:
        conteudo = csv.reader(arquivo, delimiter=';')
        next(conteudo, None)
        for linha in conteudo:
            vr_parc = linha[8].replace(',', '.')
            menor_vcto = linha[2]
            query_sql_batimento = (
                "INSERT INTO batimento(id_arquivo,operacao,fase,menor_vcto,cpfcgc_pes,parcelado_tit,contrato_tit,"
                "compl_parc,numero_parc,vr_parc,vcto_parc,cod_unidade,pep)" "VALUES (%(id_arquivo)s,%(operacao)s, "
                "%(fase)s,%(menor_vcto)s,%(cpfcgc_pes)s, %(parcelado_tit)s, %(contrato_tit)s,%(compl_parc)s,"
                "%(numero_parc)s,%(vr_parc)s,%(vcto_parc)s,%(cod_unidade)s,%(pep)s) "
            )
            dados_sql_batimento = {
                'id_arquivo': id_arquivos,
                'operacao': linha[0],
                'fase': linha[1],
                'menor_vcto': datetime.strptime(menor_vcto[0:10], "%d/%m/%Y").strftime("%Y-%m-%d"),
                'cpfcgc_pes': linha[3],
                'parcelado_tit': linha[4],
                'contrato_tit': linha[5],
                'compl_parc': linha[6],
                'numero_parc': linha[7],
                'vr_parc': float(vr_parc),
                'vcto_parc': datetime.strptime(linha[9], "%d/%m/%Y").strftime("%Y-%m-%d"),
                'cod_unidade': linha[10],
                'pep': linha[11],
            }
            print(dados_sql_batimento)
            mycursor.execute(query_sql_batimento, dados_sql_batimento)
            connection.commit()


inserir_nome_arquivo()
ler_e_inserir_arquivo_batimento()
connection.close()

As you can see, I read the files and insert into my Mysql database, but I always have to keep changing the filename with each new import. I want to know how to import the files as soon as they are saved in the folder. Example:

file1.csv

if file1.csv has already been imported:

Do not do anything

if not:   import the file

I already store the file names that are imported into the database:

# ----------- Insere o nome do arquivo que está sendo importado no banco de dados
def inserir_nome_arquivo():
    data_importacao = datetime.now().date()
    query_inserir_nome_arquivo = ("INSERT IGNORE INTO arquivo "
                                  "(nome_arquivo, data_import) "
                                  "VALUES (%(nome_arquivo)s, %(data_import)s)")
    dados_nome_arquivo = {
        'nome_arquivo': nome_arquivo,
        'data_import': data_importacao,
    }
    mycursor.execute(query_inserir_nome_arquivo, dados_nome_arquivo)
    connection.commit()

For now I'm screwed in this part. Check if I already imported the file, if I did not import it, I would import it.

Question: Is there a way to let python "sweep" the folder for a new file?

    
asked by anonymous 28.12.2017 / 13:40

0 answers