python - Python脚本写入文件在某个点后停止
问题描述
我正在尝试分析 sqlite3 文件并将结果打印到文本文件中。如果我用 print 测试代码,一切正常。当我将它写入文件时,它每次都会在同一点切断。
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 中间停止。
解决方案
好的,我首先将 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”语句(上下文管理器),我们无需关闭文件。通过使用 try/except 我们捕获错误并打印它。这将向您展示您的代码在哪里失败以及原因。
推荐阅读
- java - Ignite 应用程序是“无法找到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/util]”
- spring-boot - 弹性4j回退中的NoSuchMethodException与弹簧启动
- python-3.x - 从字典列表到 Pandas DataFrame
- r - 如何选择除某些行和列之外的整个矩阵?
- html - 字体真棒图标不连续工作
- three.js - 如何在three.js中沿曲线几何图形应用单向降低不透明度?
- android - 使用 SQLDelight 时指定初始数据库版本
- python - 读取名称存储在变量中的文件的内容
- debugging - 我无法在 Visual Studio Code 上进行调试
- mysql - PHP MySQL 管理员查询协助