Python sys Module
last modified July 15, 2024
In this article we show how to use the sys module in Python. The
sys module provides access to system-specific parameters and
functions, such as command-line arguments, interpreter settings, and runtime
environment details.
The sys module is part of the Python standard library and is
commonly used for tasks like:
- Accessing command-line arguments.
- Exiting the program.
- Interacting with the Python interpreter.
- Manipulating the Python path.
Accessing Command-Line Arguments
The following example demonstrates how to use the sys.argv list to
access command-line arguments passed to a Python script.
import sys
def main():
print("Script name:", sys.argv[0]) # The script name is always the first argument
print("Arguments passed:", sys.argv[1:]) # Remaining arguments
if __name__ == "__main__":
main()
In this program, the sys.argv list is used to access the script
name and any additional arguments passed to the script.
print("Script name:", sys.argv[0])
The first element of sys.argv is always the name of the script.
print("Arguments passed:", sys.argv[1:])
The remaining elements of sys.argv are the arguments passed to the script.
$ python main.py arg1 arg2 arg3 Script name: main.py Arguments passed: ['arg1', 'arg2', 'arg3']
Exiting the Program
The following example demonstrates how to use the sys.exit function
to exit a Python program with a specific exit code.
import sys
def main():
print("Starting the program")
sys.exit(1) # Exit with code 1
print("This will not be printed")
if __name__ == "__main__":
main()
In this program, the sys.exit function is used to terminate the
program with an exit code of 1.
sys.exit(1)
The sys.exit function terminates the program and returns the
specified exit code to the operating system.
$ python main.py Starting the program
Interacting with the Python Interpreter
The following example demonstrates how to use the sys module to
interact with the Python interpreter, such as retrieving the Python version and
executable path.
import sys
def main():
print("Python version:", sys.version)
print("Python executable path:", sys.executable)
if __name__ == "__main__":
main()
In this program, the sys.version and sys.executable
attributes are used to retrieve the Python version and the path to the Python
interpreter, respectively.
print("Python version:", sys.version)
The sys.version attribute provides information about the Python version.
print("Python executable path:", sys.executable)
The sys.executable attribute provides the path to the Python
interpreter executable.
$ python main.py Python version: 3.12.7 (tags/v3.12.7:0b05ead, Oct 1 2024, 03:06:41) [MSC v.1941 64 bit (AMD64)] Python executable path: C:\Users\Jano\AppData\Local\Programs\Python\Python312\python.exe
Manipulating the Python Path
The following example demonstrates how to use the sys.path list to
manipulate the Python path, which is used to locate modules.
import sys
def main():
print("Original Python path:", sys.path)
sys.path.append("/custom/module/path") # Add a custom path
print("Updated Python path:", sys.path)
if __name__ == "__main__":
main()
In this program, the sys.path list is modified to include a custom
module path.
sys.path.append("/custom/module/path")
The sys.path list is modified to include a custom path where Python
will search for modules.
Redirecting Standard Output
The following example demonstrates how to redirect standard output and error streams using the sys.stdout and sys.stderr objects.
import sys
def main():
# Redirect standard output to a file
with open("output.txt", "w") as f:
sys.stdout = f # Redirect stdout to the file
print("This will be written to output.txt")
sys.stdout = sys.__stdout__ # Restore stdout
# Redirect standard error to a file
with open("error.txt", "w") as f:
sys.stderr = f # Redirect stderr to the file
print("This will be written to error.txt", file=sys.stderr)
sys.stderr = sys.__stderr__ # Restore stderr
print("Output and error streams have been restored")
if __name__ == "__main__":
main()
In this program, the sys.stdout and sys.stderr objects are temporarily redirected to files. After the redirection, the original streams are restored.
sys.stdout = f # Redirect stdout to the file
The sys.stdout object is temporarily replaced with a file object to
redirect output.
sys.stdout = sys.__stdout__ # Restore stdout
The original sys.stdout is restored after the redirection.
$ python main.py Output and error streams have been restored $ cat output.txt This will be written to output.txt $ cat error.txt This will be written to error.txt
Getting System-Specific Information
The following example demonstrates how to use the sys module to
retrieve system-specific information, such as the platform and maximum integer
size.
import sys
def main():
print("Platform:", sys.platform) # Operating system platform
print("Maximum integer size:", sys.maxsize) # Maximum size of integers
print("Byte order:", sys.byteorder) # Byte order (little-endian or big-endian)
if __name__ == "__main__":
main()
In this program, the sys.platform, sys.maxsize, and
sys.byteorder attributes are used to retrieve system-specific
information.
print("Platform:", sys.platform)
The sys.platform attribute provides information about the operating
system platform.
print("Maximum integer size:", sys.maxsize)
The sys.maxsize attribute provides the maximum size of integers
supported by the platform.
print("Byte order:", sys.byteorder)
The sys.byteorder attribute indicates the native byte order
(little-endian or big-endian).
$ python main.py Platform: linux Maximum integer size: 9223372036854775807 Byte order: little
Handling Recursion Limit
The following example demonstrates how to use the sys module to get
and set the recursion limit in Python.
import sys
def recursive_function(n):
if n == 0:
return
recursive_function(n - 1)
def main():
print("Current recursion limit:", sys.getrecursionlimit()) # Get current recursion limit
sys.setrecursionlimit(2000) # Set a new recursion limit
print("New recursion limit:", sys.getrecursionlimit())
try:
recursive_function(1500) # Test recursion
print("Recursion completed successfully")
except RecursionError:
print("Recursion limit exceeded")
if __name__ == "__main__":
main()
In this program, the sys.getrecursionlimit and
sys.setrecursionlimit functions are used to get and set the
recursion limit in Python.
print("Current recursion limit:", sys.getrecursionlimit())
The sys.getrecursionlimit function retrieves the current recursion limit.
sys.setrecursionlimit(2000) # Set a new recursion limit
The sys.setrecursionlimit function sets a new recursion limit.
recursive_function(1500) # Test recursion
A recursive function is called to test the recursion limit.
$ python main.py Current recursion limit: 1000 New recursion limit: 2000 Recursion completed successfully
Source
Python sys Module - documentation
In this article we have shown how to use the sys module for system-specific tasks in Python.
Author
List all Python tutorials.