Запись скрипта Python в файл останавливается после определенного момента - PullRequest
0 голосов
/ 02 апреля 2019

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

import sqlite3
import datetime
import time


conn = sqlite3.connect("History.sqlite")
curs = conn.cursor()
results = curs.execute("SELECT visits.id, visits.visit_time, urls.url, urls.visit_count \
                                        FROM visits INNER JOIN urls ON urls.id = visits.url \
                                        ORDER BY visits.id;")
exportfile = open('chrome_report.txt', 'w')


for row in results:
    timestamp = row[1]
    epoch_start = datetime.datetime(1601,1,1)
    delta = datetime.timedelta(microseconds=int(timestamp))
    fulltime = epoch_start + delta
    string = str(fulltime)
    timeprint = string[:19]
    exportfile.write("ID: " + str(row[0]) + "\t")
    exportfile.write("visit time: " + str(timeprint) + "\t")
    exportfile.write("Url: " + str(row[2]) + "\t")
    exportfile.write("Visit count: " + str(row[3]))
    exportfile.write("\n")
    print "ID: " + str(row[0]) + "\t"
    print "visit time: " + str(timeprint) + "\t"
    print "Url: " + str(row[2]) + "\t"
    print "Visit count: " + str(row[3])
    print "\n"   
conn.close()

Таким образом, результаты печати дают правильный результат, но экспорт в файл останавливается в середине URL-адреса.

1 Ответ

0 голосов
/ 02 апреля 2019

ОК, я бы начал с замены цикла for на приведенный ниже

with open('chrome_report.txt', 'w') as exportfile:
    for row in results:
        try:
            timestamp = row[1]
            epoch_start = datetime.datetime(1601,1,1)
            delta = datetime.timedelta(microseconds=int(timestamp))
            fulltime = epoch_start + delta
            string = str(fulltime)
            timeprint = string[:19]
            exportfile.write("ID: " + str(row[0]) + "\t")
            exportfile.write("visit time: " + str(timeprint) + "\t")
            exportfile.write("Url: " + str(row[2]) + "\t")
            exportfile.write("Visit count: " + str(row[3]))
            exportfile.write("\n")
            print "ID: " + str(row[0]) + "\t"
            print "visit time: " + str(timeprint) + "\t"
            print "Url: " + str(row[2]) + "\t"
            print "Visit count: " + str(row[3])
            print "\n"
        except Exception as err:
            print(err)   

Используя оператор with (менеджер контекста), мы избавляемся от необходимости закрывать файл. Используя попытку / исключение, мы фиксируем ошибку и распечатываем ее. Это покажет вам, где ваш код не работает и почему.

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