Python

code snippets and stuff for Python

Programm Setup

Install pyenv and set it to the version you want to use Install virtualenv, using pyenv is not necessary but I like it to keep my python versions managed. Install python3.10-venv if an error message tells to.

curl https://pyenv.run | bash
pyenv install 3.11
pyenv local 3.11
apt install python3.10-venv #might not be needed with pyenv
pyenv local 3.9.0
python -m venv

Shebang and program layout

#!/usr/bin/env python3

def main(kwargs**, args**):
    pass

if __name__ == '__main__':
    main()

Beautiful Soup

Use beautiful soup for scraping and manipulating html content

pip install bs4
from bs4 import BeautifulSoup

Commandline execution

The -c flag tells python to run the appended string as a command. For example

➜ python3 -c "import datetime; print('It is: ',datetime.datetime.now())"
It is:  2022-03-29 13:37:50.057810

Help Function

adding an explantion string to a function can be used by the help() function to give explanation into what it is doing.

def adder(x,y):
    """
    adds to numbers x and y and returns the sum
    """
    return x+y

help(adder)

for a class this looks like:

class person():
    """
    A new person is born
    """
    def __init__ (self, name):
        """
        Give the person a name
        """
        self.name = name

and the output from interactive session is:

PS C:\Users\920280\OneDrive - Cognizant\Documents> python.exe -i person.py
>>> help(person)
Help on class person in module __main__:

class person(builtins.object)
 |  person(name)
 |  
 |  A new person is born
 |  
 |  Methods defined here:
 |  
 |  __init__(self, name)
 |      Give the person a name
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |  
 |  __dict__
 |      dictionary for instance variables (if defined)
 |  
 |  __weakref__
 |      list of weak references to the object (if defined)

>>> help(person.__init__) 
Help on function __init__ in module __main__:

__init__(self, name)
    Give the person a name

>>> 

CLI Arguments

Use the argparse Library to read cli arguments.

import argparse

def read_cli_arguments():
    parser = argparse.ArgumentParser()
    parser.add_argument("-f", "--file", help="Execute on this File.", type=str)
    args = parser.parse_args()
    argv = vars(args)

argv is a dictionary like {'file' : 'CliArgument'}. args` is the Namespace for all Cli Arguments.

String Formatting

Filling {} with the variable `Name'

Name = "Jacen Solo"
this_string = "Hello World I am {}".format(Name)

More complex solution by definen the positional arguments of the format function

age = 32
Name = "Nom Anor"
this_string = "Hello World. I am {1} and {0} years alive.".format(age, Name)

This puts Name in {1} because it is the second positional argument (0-based indexing) and age in {0}.

IF-Else Oneliner

this_dict['key'] = other_dict['key'] if other_dict['key'] else this_dict['key']

Read this_dict['key'] is other_dict['key'] if that key exists (evalutes to true) otherwise keep the origial value.

###Logging the logger object takes several arguments, the first on is the message that needs to be one string. Not like the print function that automatically concatenates its arguments to a string

import logging
LOGGING_LEVEL = os.environ["LOGGING_LEVEL"]

logging.basicConfig()
logger = logging.getLogger(__name__)
logger.setLevel(LOGGING_LEVEL)
logger.info('This will get logged'+' this')

Jupyter Notebook

Last updated