Проблема в том, что вы возвращаете указатель на буфер, выделенный в стеке. Как только функция вернется, этот буфер уже недействителен.
Введите все строки сразу:
writer.writerows(A)
вместо
writer.writerow(A)
Файл newfile.csv теперь выглядит следующим образом:
Max,3, M
bob,5,M
jane,6,F
Кроме того, добавьте ()
в свою последнюю строку, это вызов функции: result.close()
.
Если вы находитесь на Python 2.6 или новее, вы можете использовать эту форму:
import csv
A = (('Max', 3, 'M'),('bob', 5, 'M'),('jane', 6, 'F'))
with open('newfile.csv', 'wb') as result:
writer = csv.writer(result, dialect='excel')
writer.writerows(A)
Не уверен, что я полностью понимаю вас, но я думаю, что это поможет:
print >>f, "\n".join([",".join(x) for x in A]);
csv
, не изобретайте колесо с этой конструкцией (представьте, что одно поле «Max, Happy» нарушит ваш файл CSV)
– eumiro
31 December 2011 в 12:37
for row in A: writer.writerow(A)
. Но поскольку вы создаетеA
, вы можете использоватьwriterows
. – Katriel 31 December 2011 в 12:41csv.writer(f).writerows([x for x in a])
Я ухожу в rtfm :-) – T I 31 December 2011 в 12:45