В моем приложении на Python мне нужно было экспортировать некоторые значения в формате csv. Но проблема в том, что мне нужно «добавить» к нему некоторые значения. Я попробовал следующее решение:
import csv
from datetime import datetime
from collections import deque
def writeCSV(path,participants,values):
time=datetime.now()
with open(path, 'a', newline='') as csvfile:
writer = csv.writer(csvfile)
for value in values:
if type(value) is list:
value.prepend(participants)
value.prepend(time)
writer.writerow(value)
else:
writer.writerow([time,participants,value])
if __name__ == '__main__':
writeCSV('demo.csv',15,[['hentai','ecchi'],['power','ranger']])
Но я получаю следующую ошибку:
Traceback (most recent call last):
File "csv_deque.py", line 21, in <module>
writeCSV('demo.csv',15,[['hentai','ecchi'],['power','ranger']])
File "csv_deque.py", line 13, in writeCSV
value.prepend(participants)
Как я могу это исправить.





Проблема в том, что в списке нет метода prepend. (Но было бы неплохо, если бы было)
Как и в моем случае, у меня была аналогичная проблема: мне нужно было добавить количество участников и дату и время к каждой записи файла csv.
Итак, как и в моем случае, я предлагаю преобразовать ваш сценарий в такой вид:
import csv
from datetime import datetime
from collections import deque
def writeCSV(path,participants,values):
time=datetime.now()
with open(path, 'a', newline='') as csvfile:
writer = csv.writer(csvfile)
for value in values:
if type(value) is list:
value=deque(value)
value.appendleft(participants)
value.appendleft(time)
writer.writerow(value)
else:
writer.writerow([time,participants,value])
if __name__ == '__main__':
writeCSV('demo.csv',15,[['hentai','ecchi'],['power','ranger']])
Как видите, я использую dequeue, как показано в этом отвечать. Также вы можете видеть, что вы также можете записать объект dequeue как csv.