2015-10-01 7 views
2

Я новичок в программировании и пишу простой скрипт python, который соберет некоторую информацию с ПК для судебных целей. Некоторая информация, которую я хочу, это история Chrome. В основном мне нужно прочитать данные из базы данных sqlite истории, выполнить расчет, чтобы преобразовать отметку времени в человекочитаемый формат, а затем записать данные в файл CSV. У меня есть следующий код:конвертировать вывод из sqlite из кортежа в список в Python

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 

Я понимаю, что я не могу манипулировать данными в кортеже, но я явно преобразовать каждую строку в списке. Может кто-нибудь объяснить а) почему список (строка) не работает, и б) лучший способ сделать это?

Заранее благодарен!

+0

'list' не изменяет значение на месте, оно ** возвращает ** новый список. –

+1

'list (row)' возвращает новый список, который вы выбрасываете. 'row = list (row)' будет работать. –

+1

В командной строке хорошо попробовать. –

ответ

2

Я думаю, что:

 list(row) #convert to list - does not work 

Должен быть:

 row = list(row) #convert to list 

Кроме того, вы можете посмотреть в использовании csv.DictReader объекта вместо считывателя по умолчанию, так как это может быть более удобным (и является изменяемым, в отличие от кортежа по умолчанию). См. https://docs.python.org/2/library/csv.html#csv.DictReader для подробностей.

+0

Yep - это исправлено. Спасибо. –

Смежные вопросы