Snippets

File Path
Get the current file, path, fullpath
import sys, os
print('sys.argv[0] =', sys.argv[0])             
print('path =', os.path.dirname(sys.argv[0]))
print('full path =', os.path.abspath(os.path.dirname(sys.argv[0])))
Web
- Webserver on Python 2: python -m SimpleHTTPServer 8008
- Webserver on Python 3: python -m http.server 8008 --bind 127.0.0.1
String manipulation
- Convert Binary to String: b'a string'.decode('ascii')
- Convet String to Integer: int(string)
- Convert Int to String: str(integer)
- Remove Duplicates from a List: L = list(set(L))
- Input space separated integers in a list: lis = list(map(int, input().split()))
- Get Integers from a String (space separated): ints = [int(x) for x in S.split()]
- Swap two numbers a and b: a, b = b, a
Functions
- Finding Factorial: fac=lambda(n):reduce(int.__mul__,range(1,n+1),1)orprint(math.factorial(n))
- Get even numbers: evenNumbers =[x for x in range(11) if x % 2 == 0]
- Finding all subsets of a set: print(list(combinations([1, 2, 3, 4, 5, 6], 3)))
-  Finding greatest common divisor: def gcd(a,b): while(b):a,b=b,a%b return a
-  lambda function example using square root: sqr = lambda x: x * x print(sqr(5))
Create a random string
randomstring.py
 import random
import string
def getpassword(pwlength, extrachars):
    password = []
    for i in range(pwlength):
        password.append(random.choice(string.ascii_letters + string.digits + string.punctuation + extrachars))
    return "".join(password)
print("English password: " + getpassword(22, ""))
print("German password:  " + getpassword(22, "äöüßÄÖÜẞ"))
print("Italian password: " + getpassword(22, "ÀÈÉÌÒÙàèéìòù"))
print("French password:  " + getpassword(22, "ÀÂÄÆÇÈÉÊËÎÏÔŒÙÛÜàâäæçrèéêëîïôœùûü"))
print("Spanish password: " + getpassword(22, "¡¿ÁÉÍÑÓÚÜáéíñóúü"))
-  Execute Shell Commands execute-shell-command.pyimport subprocess cmd = subprocess.Popen( ['ls', '-l', '.'], cwd='/', stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) stdout, stderr = cmd.communicate() print(stdout) print(stderr)
Network
HTTP JSON request
HTTP-JSON-request.py
 import json, urllib.request
req = urllib.request.Request("https://example.com")
req.add_header("Accept", "application/json")
try:
    r = urllib.request.urlopen(req)
    data = json.loads(r.read())
    print(json.dumps(data))
except urllib.error.HTTPError as e:
    print(e.code)
    print(e.read())
HTTP Plain request
HTTP-Plain-request.py
 import urllib.request
req = urllib.request.Request("https://example.com")
try:
    r = urllib.request.urlopen(req)
    data = r.read().decode("utf-8")
    print(data)
except urllib.error.HTTPError as e:
    print(e.code)
    print(e.read())
Colors
Print some colors
colors.py
 class colors:
reset='\033[0m'
bold='\033[01m'
disable='\033[02m'
underline='\033[04m'
reverse='\033[07m'
strikethrough='\033[09m'
invisible='\033[08m'
class fg:
black='\033[30m'
red='\033[31m'
green='\033[32m'
orange='\033[33m'
blue='\033[34m'
purple='\033[35m'
cyan='\033[36m'
lightgrey='\033[37m'
darkgrey='\033[90m'
lightred='\033[91m'
lightgreen='\033[92m'
yellow='\033[93m'
lightblue='\033[94m'
pink='\033[95m'
lightcyan='\033[96m'
class bg:
black='\033[40m'
red='\033[41m'
green='\033[42m'
orange='\033[43m'
blue='\033[44m'
purple='\033[45m'
cyan='\033[46m'
lightgrey='\033[47m'
print(f"{colors.bold}{colors.fg.green}Success!")
Argument Parsing
import argparse
parser = argparse.ArgumentParser(description="description")
parser.add_argument("input", help="Input", nargs='?')
parser.add_argument("output", help="Output", nargs='?')
parser.add_argument("--optional", help="optional", action='append')
args = parser.parse_args()
if args.optional is not None:
    print("The optional input was provided.")
print(args.input)
print(args.output)
File Operations
- xcreates new file, returns error when it exists.
- aappends to file, creates it when it does not exist.
- woverwrites file, creates it when it does not exist.
Append "Append example" to file.txt:
f = open("file.txt", "a")
f.write("Append example")
f.close()
Skip First Couple of Lines
with open('file.txt') as f:
lines_after_2 = f.readlines()[2:]
Iteration
Range
for i in range(10):
print(i)
Deduplicate List
for i in mylist:
if i not in newlist:
newlist.append(i)
from collections import OrderedDict
newlist = list(OrderedDict.fromkeys(mylist))
Databases
TinyDB
Install: pip install tinydb
Example usage
from tinydb import TinyDB, Query
# Create DB
db = TinyDB('db.json')
db.insert({ 'type': 'OSFY', 'count': 700 })
db.insert({ 'type': 'EFY', 'count': 800 })
db.all()
# Update DB
db.update({'count': 1000}, Magazine.type == 'OSFY')
db.all()
# Search and List
Magazine = Query()
db.search(Magazine.type == 'OSFY')
db.search(Magazine.count > 750)
# Remove / Purge
db.remove(Magazine.count < 900)
db.all()
db.purge()
db.all()
# In-Memory Use
from tinydb.storages import MemoryStorage
db = TinyDB(storage=MemoryStorage)
SQLite
Example usage
import sqlite3
# Create DB
conn = sqlite3.connect('sqlite.db')
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS exampletable (id integer PRIMARY KEY, login text, email text)")
conn.commit()
# Add entry
def sql_insert(data):
    login = data[0]
    cursor.execute(f'SELECT login FROM exampletable WHERE login = "{login}"')
    results = cursor.fetchall()
    if not results:
        cursor.execute('INSERT INTO exampletable (login, email) VALUES (?, ?)', data)
        conn.commit()
    else:
        print(f'User {login} already in database')
data = ('0xfab1', 'mail@example.com')
sql_insert(data)
# Read entry
def sql_fetch():
    cursor.execute('SELECT * FROM exampletable')
    rows = cursor.fetchall()
    return rows
print(sql_fetch())
Art
- One liner code for half pyramid pattern: print('\n'.join('* ' * i for i in range(1, n + 1)))