How to Write to CSV Files in Python (original) (raw)

Summary: in this tutorial, you’ll learn how to write data into a CSV file using the built-in csv module.

Steps for writing a CSV file #

To write data into a CSV file, you follow these steps:

The following code illustrates the above steps:

`import csv

open the file in the write mode

f = open('path/to/csv_file', 'w')

create the csv writer

writer = csv.writer(f)

write a row to the csv file

writer.writerow(row)

close the file

f.close()`Code language: Python (python)

It’ll be shorter if you use the with statement so that you don’t need to call the close() method to explicitly close the file:

`import csv

open the file in the write mode

with open('path/to/csv_file', 'w') as f: # create the csv writer writer = csv.writer(f)

# write a row to the csv file
writer.writerow(row)`Code language: Python (python)

If you’re dealing with non-ASCII characters, you need to specify the character encoding in the open() function.

The following illustrates how to write UTF-8 characters to a CSV file:

`import csv

open the file in the write mode

with open('path/to/csv_file', 'w', encoding='UTF8') as f: # create the csv writer writer = csv.writer(f)

# write a row to the csv file
writer.writerow(row)`Code language: Python (python)

Writing to CSV files example #

The following example shows how to write data to the CSV file:

`import csv

header = ['name', 'area', 'country_code2', 'country_code3'] data = ['Afghanistan', 652090, 'AF', 'AFG']

with open('countries.csv', 'w', encoding='UTF8') as f: writer = csv.writer(f)

# write the header
writer.writerow(header)

# write the data
writer.writerow(data)`Code language: Python (python)

If you open the countries.csv, you’ll see one issue that the file contents have an additional blank line between two subsequent rows:

To remove the blank line, you pass the keyword argument newline='' to the open() function as follows:

`import csv

header = ['name', 'area', 'country_code2', 'country_code3'] data = ['Afghanistan', 652090, 'AF', 'AFG']

with open('countries.csv', 'w', encoding='UTF8', newline='') as f: writer = csv.writer(f)

# write the header
writer.writerow(header)

# write the data
writer.writerow(data)`Code language: Python (python)

Output:

Writing multiple rows to CSV files #

To write multiple rows to a CSV file at once, you use the writerows() method of the CSV writer object.

The following uses the writerows() method to write multiple rows into the countries.csv file:

`import csv

header = ['name', 'area', 'country_code2', 'country_code3'] data = [ ['Albania', 28748, 'AL', 'ALB'], ['Algeria', 2381741, 'DZ', 'DZA'], ['American Samoa', 199, 'AS', 'ASM'], ['Andorra', 468, 'AD', 'AND'], ['Angola', 1246700, 'AO', 'AGO'] ]

with open('countries.csv', 'w', encoding='UTF8', newline='') as f: writer = csv.writer(f)

# write the header
writer.writerow(header)

# write multiple rows
writer.writerows(data)`Code language: Python (python)

Writing to CSV files using the DictWriter class #

If each row of the CSV file is a dictionary, you can use the DictWriter class of the csv module to write the dictionary to the CSV file.

The example illustrates how to use the DictWriter class to write data to a CSV file:

`import csv

csv header

fieldnames = ['name', 'area', 'country_code2', 'country_code3']

csv data

rows = [ {'name': 'Albania', 'area': 28748, 'country_code2': 'AL', 'country_code3': 'ALB'}, {'name': 'Algeria', 'area': 2381741, 'country_code2': 'DZ', 'country_code3': 'DZA'}, {'name': 'American Samoa', 'area': 199, 'country_code2': 'AS', 'country_code3': 'ASM'} ]

with open('countries.csv', 'w', encoding='UTF8', newline='') as f: writer = csv.DictWriter(f, fieldnames=fieldnames) writer.writeheader() writer.writerows(rows)`Code language: Python (python)

How it works.

Summary #

Quiz #

Was this tutorial helpful ?