| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | :mod:`linecache` --- Random access to text lines
 | 
					
						
							|  |  |  | ================================================
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. module:: linecache
 | 
					
						
							|  |  |  |    :synopsis: This module provides random access to individual lines from text files.
 | 
					
						
							| 
									
										
										
										
											2016-06-11 15:02:54 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | .. sectionauthor:: Moshe Zadka <moshez@zadka.site.co.il>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-10 03:26:08 +00:00
										 |  |  | **Source code:** :source:`Lib/linecache.py`
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-10 19:54:11 +00:00
										 |  |  | --------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-18 14:14:42 +01:00
										 |  |  | The :mod:`linecache` module allows one to get any line from a Python source file, while
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | attempting to optimize internally, using a cache, the common case where many
 | 
					
						
							|  |  |  | lines are read from a single file.  This is used by the :mod:`traceback` module
 | 
					
						
							|  |  |  | to retrieve source lines for inclusion in  the formatted traceback.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-20 11:31:38 -04:00
										 |  |  | The :func:`tokenize.open` function is used to open files. This
 | 
					
						
							| 
									
										
										
										
											2015-03-18 14:14:42 +01:00
										 |  |  | function uses :func:`tokenize.detect_encoding` to get the encoding of the
 | 
					
						
							| 
									
										
										
										
											2015-03-20 11:31:38 -04:00
										 |  |  | file; in the absence of an encoding token, the file encoding defaults to UTF-8.
 | 
					
						
							| 
									
										
										
										
											2015-03-18 14:14:42 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | The :mod:`linecache` module defines the following functions:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-08 09:13:45 +00:00
										 |  |  | .. function:: getline(filename, lineno, module_globals=None)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-03 12:06:29 +00:00
										 |  |  |    Get line *lineno* from file named *filename*. This function will never raise an
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |    exception --- it will return ``''`` on errors (the terminating newline character
 | 
					
						
							|  |  |  |    will be included for lines that are found).
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. index:: triple: module; search; path
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    If a file named *filename* is not found, the function will look for it in the
 | 
					
						
							|  |  |  |    module search path, ``sys.path``, after first checking for a :pep:`302`
 | 
					
						
							|  |  |  |    ``__loader__`` in *module_globals*, in case the module was imported from a
 | 
					
						
							|  |  |  |    zipfile or other non-filesystem import source.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. function:: clearcache()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Clear the cache.  Use this function if you no longer need lines from files
 | 
					
						
							|  |  |  |    previously read using :func:`getline`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-08 09:13:45 +00:00
										 |  |  | .. function:: checkcache(filename=None)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Check the cache for validity.  Use this function if files in the cache  may have
 | 
					
						
							|  |  |  |    changed on disk, and you require the updated version.  If *filename* is omitted,
 | 
					
						
							|  |  |  |    it will check all the entries in the cache.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-05 12:07:57 +13:00
										 |  |  | .. function:: lazycache(filename, module_globals)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-14 01:14:54 +00:00
										 |  |  |    Capture enough detail about a non-file-based module to permit getting its
 | 
					
						
							| 
									
										
										
										
											2016-10-19 16:29:26 +03:00
										 |  |  |    lines later via :func:`getline` even if *module_globals* is ``None`` in the later
 | 
					
						
							| 
									
										
										
										
											2015-03-05 12:07:57 +13:00
										 |  |  |    call. This avoids doing I/O until a line is actually needed, without having
 | 
					
						
							|  |  |  |    to carry the module globals around indefinitely.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    .. versionadded:: 3.5
 | 
					
						
							| 
									
										
										
										
											2009-06-08 09:13:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | Example::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    >>> import linecache
 | 
					
						
							| 
									
										
										
										
											2015-03-18 14:16:50 +01:00
										 |  |  |    >>> linecache.getline(linecache.__file__, 8)
 | 
					
						
							|  |  |  |    'import sys\n'
 |