DEV Community

Cover image for Let's talk about Sys
vybhav72954
vybhav72954

Posted on

Let's talk about Sys

Everybody loves Python (Trust me, everybody does). But why? An intuitive, simple, yet highly scalable language, Python is a dynamically typed, interpreted language. However, we will not dive into the nitty-gritty of Python's properties but will instead focus on the functionality of the interpreter of Python.

sys module in Python provides information about constants, functions, and methods of the Python interpreter. Moreover, it also provides access to multiple variables under the command of the interpreter and their associated methods. So basically sys module allows one to operate over the interpreter, so what, is it useful?

Let's talk about some interesting use cases of sys module.

Installation

But first of all, how to access the sys module?

sys is part of Python 3.x Standard Library, so no separate installation is required.

Just import it and you are good to go.

To verify sys, let's start by checking its version.

# Imports
import sys

print(sys.version)
Enter fullscreen mode Exit fullscreen mode
3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)]
Enter fullscreen mode Exit fullscreen mode

Viola! It's working. For more information about sys and its license, run sys.copyright.

Basic Usage

Let's start with some basic use cases of sys module.

  • sys.maxsize returns the max value that an int variable can hold.
import sys

print(sys.maxsize)
Enter fullscreen mode Exit fullscreen mode
9223372036854775807
Enter fullscreen mode Exit fullscreen mode
  • sys.path returns a list containing all the paths to all the Python Modules and the interpreter in the running environment.
import sys

print(sys.path)
Enter fullscreen mode Exit fullscreen mode
['C:\\Users\\asus\\PycharmProjects\\Auto_Caption_Generator', 'C:\\Users\\asus\\PycharmProjects\\Auto_Caption_Generator', 'C:\\Program Files\\JetBrains\\PyCharm 2020.3.3\\plugins\\python\\helpers\\pycharm_display', 'C:\\Users\\asus\\AppData\\Local\\Programs\\Python\\Python38\\python38.zip', 'C:\\Users\\asus\\AppData\\Local\\Programs\\Python\\Python38\\DLLs', 'C:\\Users\\asus\\AppData\\Local\\Programs\\Python\\Python38\\lib', 'C:\\Users\\asus\\AppData\\Local\\Programs\\Python\\Python38', 'C:\\Users\\asus\\Music_Classification']
Enter fullscreen mode Exit fullscreen mode
  • sys.platform can be used to identify the running platform (operating system).
import sys

print(sys.platform)
Enter fullscreen mode Exit fullscreen mode
win32
Enter fullscreen mode Exit fullscreen mode
  • sys.executable tells where the Python interpreter is present.
import sys

print(sys.executable)
Enter fullscreen mode Exit fullscreen mode
C:\Users\asus\Music_Classification\Scripts\python.exe
Enter fullscreen mode Exit fullscreen mode
  • sys.modules returns a dictionary containing names of all modules in the current environemnt.
import sys

print(sys.modules)
Enter fullscreen mode Exit fullscreen mode
{'sys': <module 'sys' (built-in)>, 'builtins': <module 'builtins' (built-in)>, '_frozen_importlib': <module 'importlib._bootstrap' (frozen)>, '_imp': <module '_imp' (built-in)>, '_warnings': <module '_warnings' (built-in)>, '_frozen_importlib_external': <module 'importlib._bootstrap_external' (frozen)>, '_io': <module 'io' (built-in)>, 'marshal': <module 'marshal' (built-in)>, 'nt': <module 'nt' (built-in)>, '_thread': <module '_thread' (built-in)>, '_weakref': <module '_weakref' (built-in)>, 'winreg': <module 'winreg' (built-in)>, 'time': <module 'time' (built-in)>, 'zipimport': <module 'zipimport' (frozen)>, '_codecs': <module '_codecs' (built-in)>, 'codecs': <module 'codecs' from 'C:\\Users\\asus\\AppData\\Local\\Programs\\Python\\Python38\\lib\\codecs.py'>, 'encodings.aliases': <module 'encodings.aliases' from 'C:\\Users\\asus\\AppData\\Local\\Programs\\Python\\Python38\\lib\\encodings\\aliases.py'}
Enter fullscreen mode Exit fullscreen mode
  • sys.exit can be used to terminate a program at once.
  • Apart from these CLI usages, sys can be used for I/O as well:
    • stdin (Get input from the command line)
    • stdout (Display output on the screen, the beloved print is just a wrapper around stdout object)
    • stderr (The source of all the error messages, each and every exception is handled and written to stderr)

Advanced Usecase

These are some simple usage of sys module. Let's take one advanced use case:

I made a script to determine the traffic on all of my GitHub Repositories. I was having a look at the Pickled database and was unable to determine the corresponding Repo. I knew that my script took the name of GitHub Repo as an argument. By using sys.argv in the driver code. I was able to determine the exact arguments provided to the script.

if __name__ == "__main__":
    main()
    print("Arguments: ", str(sys.argv))
Enter fullscreen mode Exit fullscreen mode
2021-05-13T00:00:00Z {"uniques": 1, "count": 4}
2021-05-20T00:00:00Z {"uniques": 1, "count": 2}

2 elements
Arguments:  ['github_traffic.py', 'view', '-u', 'vybhav72954', '-r', 'My_Junk']
Enter fullscreen mode Exit fullscreen mode

Granted, there are more straightforward ways to sort this problem, but using sys.argv can be really helpful when writing scripts containing multiple classes and functions.

In Closing

Sys is another helpful module in Python Standard Lib, which has multiple basic to advanced use cases, with standard I/O being the most practical application, sys can be used in other scenarios as well, which are discussed above.

There is much more to sys but was out of scope for this blog like managing hooks, recursion depth, traces, encoding, and profiles. There are other useful methods as well; for a detailed insight, have a look here.

Top comments (0)