Как исправить запись файла жестко закодированных верхних и нижних колонтитулов, когда нет доступных записей для извлечения из базы данных Python и MySQL

Да, есть небольшое влияние на производительность. Регулярный компилятор не делает никакой оптимизации. Он просто заменяет оператор + на вызовы метода StringBuilder. Например. если у вас есть String s = "x" + "y" + "z";, его можно заменить на String s = new StringBuilder().append("x").append("y").append("z"); перед компиляцией в байт-коды. Но здесь нет реальной оптимизации. Он не заменяет его на String s = "xyz"; перед созданием байтового кода. Я не уверен, что компилятор JIT оптимизирует его, прежде чем генерировать собственные инструкции процессора. Но даже если это так, это во время выполнения, что приводит к небольшому результату.

Лично я хотел бы больше заботиться о элегантности и удобочитаемости, если они приходят за небольшую производительность.

0
задан rob 27 March 2019 в 04:03
поделиться

1 ответ

У вас есть весь код для открытия файла, написания верхнего и нижнего колонтитула и повторного закрытия файла, и все это в цикле for итерации по записям, возвращаемым из запроса. На самом деле, если у вас более одной записи, он должен продолжать открывать файл, перезаписывать содержимое новой записью, включая верхний и нижний колонтитулы, и закрывать файл.

Вам нужно открыть файл один раз, написать заголовок, затем перебрать записи и записать каждую, а затем, наконец, написать нижний колонтитул и закрыть файл. Код может выглядеть примерно так:

with open("c:\\test\\test.txt", "w") as feed_file:
    feed_file.write("Name" + "\t" + "Age" )

    for record in cur.fetchall():
        filteredrecord = (record[0] + "\t" + record[1])
        print(filteredrecord)
        feed_file.write("\n" + (filteredrecord))

    feed_file.write("\n" + "ENDOFFILE")

Обратите внимание, что вам не нужно явно закрывать файл при использовании структуры with.

0
ответ дан Etienne Ott 27 March 2019 в 04:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: