diff options
author | Eli Bendersky <eliben@gmail.com> | 2011-03-11 14:33:36 (GMT) |
---|---|---|
committer | Eli Bendersky <eliben@gmail.com> | 2011-03-11 14:33:36 (GMT) |
commit | 9cc6249dee38d7fbccad2a37444ba54b5210fbd0 (patch) | |
tree | c69422754c015f9f5a48edc23992a8e9ff94507e /Doc | |
parent | 30178068d941ba3e42c6345d466576b0ca69d72c (diff) | |
download | cpython-9cc6249dee38d7fbccad2a37444ba54b5210fbd0.zip cpython-9cc6249dee38d7fbccad2a37444ba54b5210fbd0.tar.gz cpython-9cc6249dee38d7fbccad2a37444ba54b5210fbd0.tar.bz2 |
Issue #11426: use 'with' statements on open files in CSV examples
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/library/csv.rst | 46 |
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:: |