cpython: f2a73d65422a (original) (raw)
--- a/Doc/library/csv.rst +++ b/Doc/library/csv.rst @@ -419,32 +419,36 @@ Examples The simplest example of reading a CSV file:: import csv
- with open('some.csv', newline='') as f:
reader = csv.reader(f)[](#l1.11)
for row in reader:[](#l1.12)
print(row)[](#l1.13)
Reading a file with an alternate format:: import csv
- reader = csv.reader(open("passwd"), delimiter=':', quoting=csv.QUOTE_NONE)
- for row in reader:
print(row)[](#l1.20)
- with open('passwd') as f:
reader = csv.reader(f, delimiter=':', quoting=csv.QUOTE_NONE)[](#l1.22)
for row in reader:[](#l1.23)
print(row)[](#l1.24)
The corresponding simplest possible writing example is:: import csv
- with open('some.csv', 'w') as f:
writer = csv.writer(f)[](#l1.32)
writer.writerows(someiterable)[](#l1.33)
Since :func:open
is used to open a CSV file for reading, the file
will by default be decoded into unicode using the system default
encoding (see :func:locale.getpreferredencoding
). To decode a file
using a different encoding, use the encoding
argument of open::
- import csv
- reader = csv.reader(open("some.csv", newline='', encoding='utf-8'))
- for row in reader:
print(row)[](#l1.43)
- import csv
- with open('some.csv', newline='', encoding='utf-8') as f:
reader = csv.reader(f)[](#l1.46)
for row in reader:[](#l1.47)
print(row)[](#l1.48)
The same applies to writing in something other than the system default encoding: specify the encoding argument when opening the output file. @@ -453,18 +457,20 @@ Registering a new dialect:: import csv csv.register_dialect('unixpwd', delimiter=':', quoting=csv.QUOTE_NONE)
A slightly more advanced use of the reader --- catching and reporting errors:: import csv, sys
- filename = "some.csv"
- reader = csv.reader(open(filename, newline=''))
- try:
for row in reader:[](#l1.66)
print(row)[](#l1.67)
- except csv.Error as e:
sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e))[](#l1.69)
- filename = 'some.csv'
- with open(filename, newline='') as f:
reader = csv.reader(f)[](#l1.72)
try:[](#l1.73)
for row in reader:[](#l1.74)
print(row)[](#l1.75)
except csv.Error as e:[](#l1.76)
sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e))[](#l1.77)
And while the module doesn't directly support parsing strings, it can easily be done::