merge from 3.1
This commit is contained in:
commit
a7a1c15111
|
@ -419,32 +419,36 @@ Examples
|
|||
The simplest example of reading a CSV file::
|
||||
|
||||
import csv
|
||||
reader = csv.reader(open("some.csv", newline=''))
|
||||
for row in reader:
|
||||
print(row)
|
||||
with open('some.csv', newline='') as f:
|
||||
reader = csv.reader(f)
|
||||
for row in reader:
|
||||
print(row)
|
||||
|
||||
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)
|
||||
with open('passwd') as f:
|
||||
reader = csv.reader(f, delimiter=':', quoting=csv.QUOTE_NONE)
|
||||
for row in reader:
|
||||
print(row)
|
||||
|
||||
The corresponding simplest possible writing example is::
|
||||
|
||||
import csv
|
||||
writer = csv.writer(open("some.csv", "w"))
|
||||
writer.writerows(someiterable)
|
||||
with open('some.csv', 'w') as f:
|
||||
writer = csv.writer(f)
|
||||
writer.writerows(someiterable)
|
||||
|
||||
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)
|
||||
import csv
|
||||
with open('some.csv', newline='', encoding='utf-8') as f:
|
||||
reader = csv.reader(f)
|
||||
for row in reader:
|
||||
print(row)
|
||||
|
||||
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)
|
||||
reader = csv.reader(open("passwd"), 'unixpwd')
|
||||
with open('passwd') as f:
|
||||
reader = csv.reader(f, 'unixpwd')
|
||||
|
||||
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:
|
||||
print(row)
|
||||
except csv.Error as e:
|
||||
sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e))
|
||||
filename = 'some.csv'
|
||||
with open(filename, newline='') as f:
|
||||
reader = csv.reader(f)
|
||||
try:
|
||||
for row in reader:
|
||||
print(row)
|
||||
except csv.Error as e:
|
||||
sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e))
|
||||
|
||||
And while the module doesn't directly support parsing strings, it can easily be
|
||||
done::
|
||||
|
|
Loading…
Reference in New Issue