【发布时间】:2015-10-01 09:12:48
【问题描述】:
我是编程新手,正在编写一个简单的 Python 脚本,该脚本将从 PC 收集一些信息用于取证目的。我想要的一些信息是 Chrome 历史记录。基本上我需要从历史 sqlite 数据库中读取数据,执行计算以将时间戳转换为人类可读的格式,然后将数据写入 CSV 文件。我有以下代码:
connection = sqlite3.connect('c:\history')### need correct path
connection.text_factory = str
cur = connection.cursor()
output_file = open('chrome_history2.csv', 'wb')
csv_writer = csv.writer(output_file,)
headers = ('URL', 'Title', 'Visit Count', 'Last Visit')
csv_writer.writerow(headers)
epoch = datetime(1601, 1, 1)
for row in (cur.execute('select url, title, visit_count, last_visit_time from urls limit 10')): #selects data
list(row) #convert to list - does not work
url_time = epoch + timedelta(microseconds=row[3]) #calculates time
row[3] = url_time #changes value in row to readable time
csv_writer.writerow(row)
connection.close()
此代码返回错误:
TypeError: 'tuple' object does not support item assignment
我知道我无法操作元组中的数据,但我明确地将每一行转换为一个列表。谁能解释 a) 为什么 列表(行) 不起作用,并且 b) 有更好的方法吗?
提前致谢!
【问题讨论】:
-
list不会更改值,它返回一个新列表。 -
list(row)返回一个新列表,您将其丢弃。row = list(row)会起作用。 -
在命令提示符下试一下就好了。