summaryrefslogtreecommitdiffstats
path: root/Doc/library
diff options
context:
space:
mode:
authorSenthil Kumaran <senthil@uthcode.com>2012-03-14 02:47:51 (GMT)
committerSenthil Kumaran <senthil@uthcode.com>2012-03-14 02:47:51 (GMT)
commit21c71bac5f684b0ec1665d841d05f91e078c3964 (patch)
tree57a3a7d2de94d8e35cc588fd04a270e102fae55b /Doc/library
parent817dd91595d202e9582435430b98ba65d14d14a7 (diff)
downloadcpython-21c71bac5f684b0ec1665d841d05f91e078c3964.zip
cpython-21c71bac5f684b0ec1665d841d05f91e078c3964.tar.gz
cpython-21c71bac5f684b0ec1665d841d05f91e078c3964.tar.bz2
closes Issue12365 - Add an example explaining the context manager use case of urllib.urlopen
Diffstat (limited to 'Doc/library')
-rw-r--r--Doc/library/urllib.request.rst18
1 files changed, 13 insertions, 5 deletions
diff --git a/Doc/library/urllib.request.rst b/Doc/library/urllib.request.rst
index cc759a4..b51ce3f 100644
--- a/Doc/library/urllib.request.rst
+++ b/Doc/library/urllib.request.rst
@@ -46,8 +46,8 @@ The :mod:`urllib.request` module defines the following functions:
If neither *cafile* nor *capath* is specified, an HTTPS request
will not do any verification of the server's certificate.
- This function returns a file-like object with two additional methods from
- the :mod:`urllib.response` module
+ This function returns a file-like object that works as a :term:`context manager`,
+ with two additional methods from the :mod:`urllib.response` module
* :meth:`geturl` --- return the URL of the resource retrieved,
commonly used to determine if a redirect was followed
@@ -967,8 +967,17 @@ The following W3C document, http://www.w3.org/International/O-charset , lists
the various ways in which a (X)HTML or a XML document could have specified its
encoding information.
-As python.org website uses *utf-8* encoding as specified in it's meta tag, we
-will use same for decoding the bytes object. ::
+As the python.org website uses *utf-8* encoding as specified in it's meta tag, we
+will use the same for decoding the bytes object. ::
+
+ >>> with urllib.request.urlopen('http://www.python.org/') as f:
+ ... print(f.read(100).decode('utf-8'))
+ ...
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtm
+
+It is also possible to achieve the same result without using the
+:term:`context manager` approach. ::
>>> import urllib.request
>>> f = urllib.request.urlopen('http://www.python.org/')
@@ -976,7 +985,6 @@ will use same for decoding the bytes object. ::
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtm
-
In the following example, we are sending a data-stream to the stdin of a CGI
and reading the data it returns to us. Note that this example will only work
when the Python installation supports SSL. ::