Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Python GNU readline Interface
The readline module is a UNIX-specific interface to the GNU readline library. It provides functions to manage command history, line editing, and tab completion in Python's interactive interpreter. This module can enhance the user experience by enabling features like command history persistence and custom completion.
For macOS systems, the readline module may use the libedit library instead of GNU readline, which has different configuration options.
Importing the Module
To use the readline functionality, import the module in your Python code ?
import readline
Key Functions
| Function | Description |
|---|---|
readline.parse_and_bind(string) |
Parse and execute a single line from readline init file |
readline.get_line_buffer() |
Get the current content of the line buffer |
readline.insert_text(string) |
Insert text into the command line |
readline.read_history_file([filename]) |
Load command history from file (default: ~/.history) |
readline.write_history_file([filename]) |
Save command history to file (default: ~/.history) |
readline.clear_history() |
Clear the current history buffer |
readline.add_history(line) |
Append a line to the history buffer |
readline.get_history_length() |
Get the maximum number of history entries |
readline.set_history_length(length) |
Set the maximum number of history entries |
Example: Persistent Command History
This example creates a custom history file that persists commands between Python sessions ?
import readline
import os
import atexit
# Define custom history file path
history_file = os.path.join(os.path.expanduser("~"), ".my_python_hist")
try:
# Load existing history
readline.read_history_file(history_file)
print(f"Loaded history from {history_file}")
except FileNotFoundError:
print("No existing history file found")
# Register function to save history on exit
atexit.register(readline.write_history_file, history_file)
print("History management setup complete")
Working with History Items
You can manipulate individual history entries programmatically ?
import readline
# Add some commands to history
readline.add_history("print('Hello World')")
readline.add_history("x = 42")
readline.add_history("print(x)")
# Get current history length
length = readline.get_current_history_length()
print(f"Current history length: {length}")
# Retrieve specific history item
if length > 0:
last_command = readline.get_history_item(length)
print(f"Last command: {last_command}")
Current history length: 3 Last command: print(x)
Tab Completion Setup
Enable tab completion for enhanced interactive experience ?
import readline
import rlcompleter
# Enable tab completion
readline.parse_and_bind("tab: complete")
print("Tab completion enabled")
print("Try typing 'print(' and press Tab in interactive mode")
Tab completion enabled
Try typing 'print(' and press Tab in interactive mode
Conclusion
The readline module provides powerful command-line editing capabilities for Python applications. Use it to create persistent history files, enable tab completion, and enhance the interactive Python experience.
