I have a python script that generates a bunch of data in a while loop. I need to write this data to a CSV file, so it writes by column rather than row.
For example in loop 1 of my script I generate:
(1, 2, 3, 4)
I need this to reflect in my csv script like so:
Result_1 1 Result_2 2 Result_3 3 Result_4 4
On my second loop i generate:
(5, 6, 7, 8)
I need this to look in my csv file like so:
Result_1 1 5 Result_2 2 6 Result_3 3 7 Result_4 4 8
and so forth until the while loop finishes. Can anybody help me?
EDIT
The while loop can last over 100,000 loops
The reason csv
doesn't support that is because variable-length lines are not really supported on most filesystems. What you should do instead is collect all the data in lists, then call zip()
on them to transpose them after.
>>> l = [('Result_1', 'Result_2', 'Result_3', 'Result_4'), (1, 2, 3, 4), (5, 6, 7, 8)] >>> zip(*l) [('Result_1', 1, 5), ('Result_2', 2, 6), ('Result_3', 3, 7), ('Result_4', 4, 8)]
wr.writerow(item) #column by column wr.writerows(item) #row by row
This is quite simple if your goal is just to write the output column by column.
If your item is a list:
yourList = [] with open('yourNewFileName.csv', 'w', ) as myfile: wr = csv.writer(myfile, quoting=csv.QUOTE_ALL) for word in yourList: wr.writerow([word])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With