| 
									
										
										
										
											2024-05-08 21:52:39 +02:00
										 |  |  | :mod:`!linecache` --- Random access to text lines
 | 
					
						
							|  |  |  | =================================================
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | .. module:: linecache
 | 
					
						
							| 
									
										
										
										
											2019-11-26 03:47:59 +05:30
										 |  |  |    :synopsis: 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
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-24 14:44:41 +02:00
										 |  |  |    If a file named *filename* is not found, the function first checks
 | 
					
						
							|  |  |  |    for a :pep:`302` ``__loader__`` in *module_globals*.
 | 
					
						
							|  |  |  |    If there is such a loader and it defines a ``get_source`` method,
 | 
					
						
							|  |  |  |    then that determines the source lines
 | 
					
						
							|  |  |  |    (if ``get_source()`` returns ``None``, then ``''`` is returned).
 | 
					
						
							|  |  |  |    Finally, if *filename* is a relative filename,
 | 
					
						
							|  |  |  |    it is looked up relative to the entries in the module search path, ``sys.path``.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. 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'
 |