Чтение и обработка всех файлов из списка - PullRequest
0 голосов
/ 07 мая 2020

приведенный ниже пример сценария может читать файл из fileDir и добавлять файлы в список (fileList). Я могу выполнить функцию и вставить данные в базу данных. Проблема теперь работает только для одного файла json ... если в fileDir есть больше файлов, сценарий будет выполнять только один файл ... Если вы заметили, я использую то же имя переменной dataFile до конца процесса вставки данных .

Я хотел бы иметь возможность открывать и читать больше файлов один за другим. Пожалуйста, покажите и помогите мне правильный способ решить эту проблему. Спасибо

logFile

1.json
2.json

print (listFile) output

[{'1': 'one'}, {'2': 'two'}]
##Open and read file
fileDir = 'logFile/*.json'
listFile = []
for file1 in glob.iglob(fileDir):
    with open(file1,'r') as f:
        dataFile = json.load(f)
        listFile.append(dataFile)
#print(listFile)

##function to read dataFile and insert data file to db
def db(db_name, table_name):
    with open(file1,'r') as f:
        dataFile = json.load(f)

    ##Process raw dataFiles and extract data
    for entry in dataFile:
        some processing to extract and append data

    ##Insert clean dataFile onto db
    sql = "INSERT INTO ....."
    cursor.executemany( sql, dataFile ....)
    db.commit()
    db.close()    


Думаю, все ли файлы в список [ ]. Можно ли открывать и читать файлы по одному из списка?

fileDir = 'logFile'
file_list = os.listdir(fileDir)

for jf in file_list:
    #print(jf)

print (jf) output

['1.json', '2.json']

попробуйте открыть и прочитать каждый json файл в списке

with open(jf, 'r') as f:
        data = json.load(f)
        print(data)

есть ошибка

FileNotFoundError: [Errno 2] No such file or directory: '1.json'

Любая помощь оценена. Спасибо

1 Ответ

1 голос
/ 07 мая 2020

Функция позволяет поместить любое количество файлов для добавления в базу данных, но проблема в том, что вы просто предоставляете ей только 1 файл.

Итак, если вы добавите дополнительный для l oop в db функция должна работать.

##Open and read file
fileDir = 'logFile/*.json'
listFile = []
for file1 in glob.iglob(fileDir):
    with open(file1,'r') as f:
        dataFile = json.load(f)
        listFile.append(dataFile)
#print(listFile)

##function to read dataFile and insert data file to db
def db(db_name, table_name):
    dataFile = ""
    for file1 in glob.iglob(fileDir): 
        with open(file1,'r') as f:
            dataFile = json.load(f)

        ##Process raw dataFiles and extract data
        for entry in dataFile:
            some processing to extract and append data

        ##Insert clean dataFile onto db
        sql = "INSERT INTO ....."
        cursor.executemany( sql, dataFile ....)

    db.commit()
    db.close()    

Вы можете переместить оператор фиксации внутрь l oop, если вы чувствуете, что я эксперт в SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...