我试图在单独的窗口中显示我的Chrome历史记录。我没有收到错误但没有显示任何内容。这是我的代码。
import sqlite3
import csv
from datetime import datetime, timedelta
conn = sqlite3.connect('C:\Users\Lewis Collins\AppData\Local\Google\Chrome\User Data\Default\History')
conn.text_factory = str
c = conn.cursor()
output_file = open('chrome_history.csv', 'wb')
csv_writer = csv.writer(output_file)
headers = ('Title', 'Visit Count', 'Date (GMT)')
csv_writer.writerow(headers)
epoch = datetime(1601, 1, 1)
for row in (c.execute('select url, title, visit_count, last_visit_time from urls')):
row = list(row)
url_time = epoch + timedelta(microseconds=row[3])
row[3] = url_time
csv_writer.writerow(row)
我确实从另一篇文章获得了代码库,我正在尝试为自己的程序扩展它。为什么Pycharm脚本不显示任何表?
答案 0 :(得分:1)
不清楚您是否希望这些行显示在您的控制台或其他地方,但是现在您已将此设置为通过以下两行写入文件:
output_file = open('chrome_history.csv', 'wb')
csv_writer = csv.writer(output_file)
'chrome_history.csv'指定您正在编写csvs的目标文件。我在本地运行你的代码并且它写入了.csv就好了,所以你可能只需要打开那个csv(它将保存在python脚本所在的目录中。)
如果我误解了并且您希望这些数据出现在您的控制台中并使用csv,则需要导入sys然后将目标指定为'sys.stdout',如下所示:
import sys
...
csv_writer = csv.writer(sys.stdout)
这有点迂回,因为使用'print'可以获得相同的结果而无需创建csv.writer对象。例如:
print(header)
...
for row in (c.execute('select url, title, visit_count, last_visit_time from urls')):
...
print(row)
我最好的猜测是你做得对,但你不知道输出在哪里,因为打印到控制台会非常笨拙。考虑到这一点,我已经调整了你的代码并在最后添加了一些以便随后打开文件(假设你正在使用windows - mac用户还有一些步骤,请看这个链接:{{3} })
import csv
import os
import sqlite3
from datetime import datetime, timedelta
with sqlite3.connect('C:\Users\Lewis Collins\AppData\Local\Google\Chrome\User Data\Default\History') as conn:
conn.text_factory = str
c = conn.cursor()
output_file_path = 'chrome_history.csv'
with open(output_file_path, 'wb') as output_file:
csv_writer = csv.writer(output_file, quoting=csv.QUOTE_ALL)
headers = ['URL', 'Title', 'Visit Count', 'Date (GMT)']
csv_writer.writerow(headers)
epoch = datetime(1601, 1, 1)
for row in (c.execute('select url, title, visit_count, last_visit_time from urls')):
row = list(row)
url_time = epoch + timedelta(microseconds=row[3])
row[3] = url_time
csv_writer.writerow(row)
os.startfile(output_file_path)
一些注意事项: 添加在'with'中,用于打开连接语句。自动关闭这些连接并提供错误处理。请参阅链接了解详情:http://www.blog.pythonlibrary.org/2010/09/04/python-101-how-to-open-a-file-or-program/
在header变量中添加了一个额外项,因为你在SQL语句中提取了4个项目。
添加了完全引用所有行的'quoting = csv.QUOTE_ALL' - 在查看可能包含空格的网址或网页标题时应该会有所帮助。
希望这有帮助。