# Python Linecache Module

The `linecache` module allows you to get any line from a Python source file, while attempting to optimize internally using a cache, which is common when many lines are read from a single file. This is used by the `traceback` module to retrieve source lines for formatted stack traces.

## Importing the Module

```python
import linecache
```

## Reading Lines

The `linecache.getline()` function retrieves a specific line from a file.

```python
import linecache
import os

# Create a dummy file
filename = 'example_script.py'
with open(filename, 'w') as f:
    f.write('def func():\n    return "Hello"\n\nprint(func())')

# Get the 2nd line
line = linecache.getline(filename, 2)
print(f"Line 2: {line.strip()}")
# Output: Line 2:     return "Hello"
```

If the filename cannot be found or the line number is invalid, it returns an empty string.

## Managing the Cache

The module stores file content in memory. You might need to manage this cache.

### `clearcache()`

Clears the cache. Use this if you no longer need the data read from files previously.

```python
linecache.clearcache()
```

### `checkcache()`

Check the cache for validity. Use this if files on disk might have changed, and you want the updated version.

```python
linecache.checkcache(filename)
```

## Lazy Loading

The `lazycache()` function allows you to capture information about a non-file-based module to permit getting its lines later via `getline()`.

[[programming/python/python]]