summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Bendersky <eliben@gmail.com>2011-03-11 14:33:36 (GMT)
committerEli Bendersky <eliben@gmail.com>2011-03-11 14:33:36 (GMT)
commit9cc6249dee38d7fbccad2a37444ba54b5210fbd0 (patch)
treec69422754c015f9f5a48edc23992a8e9ff94507e
parent30178068d941ba3e42c6345d466576b0ca69d72c (diff)
downloadcpython-9cc6249dee38d7fbccad2a37444ba54b5210fbd0.zip
cpython-9cc6249dee38d7fbccad2a37444ba54b5210fbd0.tar.gz
cpython-9cc6249dee38d7fbccad2a37444ba54b5210fbd0.tar.bz2
Issue #11426: use 'with' statements on open files in CSV examples
-rw-r--r--Doc/library/csv.rst46
1 files changed, 26 insertions, 20 deletions
diff --git a/Doc/library/csv.rst b/Doc/library/csv.rst
index 6a981a8..a2dfd17 100644
--- a/Doc/library/csv.rst
+++ b/Doc/library/csv.rst
@@ -400,32 +400,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.
@@ -434,18 +438,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::