I'm trying to use Python 3.2 on a Windows computer to write a simple CSV file, however I'm having no luck. From the csv module documentation for Python 3.2:
>>> import csv >>> spamWriter = csv.writer(open('eggs.csv', 'w'), delimiter=' ', ... quotechar='|', quoting=csv.QUOTE_MINIMAL) >>> spamWriter.writerow(['Spam'] * 5 + ['Baked Beans']) >>> spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
produces a file with each line terminated by the byte sequence \r\r\n
, so it looks like each line has an extra empty line when you open it with, e.g., MS Excel. This is not a "CSV file".
Note, if I try the same example for Python 2.7 in Python 3.2 (where the big difference is 'w'
vs 'wb'
for the file mode), I get an error when I try spamWriter.writerow
:
Traceback (most recent call last): File "", line 1, in TypeError: 'str' does not support the buffer interface
How do I write a simple CSV file from Python 3.2 on a Windows computer?
Write CSV files with csv.DictWriter() class can be used to write to a CSV file from a Python dictionary. Here, file - CSV file where we want to write to. fieldnames - a list object which should contain the column headers specifying the order in which data should be written in the CSV file.
By using pandas. DataFrame. to_csv() method you can write/save/export a pandas DataFrame to CSV File. By default to_csv() method export DataFrame to a CSV file with comma delimiter and row index as the first column.
Documentation says that you should use open('eggs.csv', 'w', newline='')
http://docs.python.org/py3k/library/csv.html#id2
This will work on both Python 2 and Python 3:
if sys.version_info >= (3,0,0): f = open(filename, 'w', newline='') else: f = open(filename, 'wb')
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