Skip to content

Instantly share code, notes, and snippets.

def docx_replace(doc, data):
paragraphs = list(doc.paragraphs)
for t in doc.tables:
for row in t.rows:
for cell in row.cells:
for paragraph in cell.paragraphs:
for p in paragraphs:
for key, val in data.items():
key_name = '${{{}}}'.format(key) # use placeholders in the form ${PlaceholderName}
View restic-backup-windows-vss.ps1
# Windows PowerShell Script to use restic to backup files using the Volume Shadow Copy Service, allowing
# that are in use to be backed up. The script must be run with elevated privileges.
# The Volume Shadow Copy Service must be enabled for the disk volume that contains the files to be backed up.
# credit:
# Parameters
$resticExe = 'C:\Users\Username\go\bin\restic.exe'
$resticRepository = '\\SYNOLOGY212J\backups\restic-workstation'
$rootVolume = "C:\"
adejones /
Last active Aug 20, 2020
openpyxl (2.4.8) sheet-to-dict like the csv DictReader - based on
from openpyxl import load_workbook
def XLSXDictReader(f):
book = load_workbook(f)
sheet =
rows = sheet.max_row
cols = sheet.max_column
headers = dict((i, sheet.cell(row=1, column=i).value) for i in range(1, cols))
def item(i, j):
return (sheet.cell(row=1, column=j).value, sheet.cell(row=i, column=j).value)
import docx
# general routine for finding and replacing text in a docx
def docx_find_replace_text(search_text, replace_text, paragraphs):
"""Replace strings and retain the same style.
The text to be replaced can be split over several runs so
search through, identify which runs need to have text replaced
then replace the text in those identified
adejones /
Last active Jan 27, 2020 — forked from RWJMurphy/
Python class and utility for file rotation. Configurable daily, weekly and monthly retention; can use hard links to save space; supports `argparse` config files.
#!/usr/bin/env python3
# vim: ft=python ts=4 sw=4 expandtab
# Copyright (c) 2013 Reed Kraft-Murphy <>
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
adejones /
Last active Apr 16, 2019
Monkey-patch Document to accept a Word Template .dotx - tested on python-docx v0.8.10
# Monkey-patch Document to load a Word Template .dotx
# tested on python-docx v0.8.10 and based on
import docx
from docx.opc.constants import CONTENT_TYPE
from docx.package import Package
from docx.api import _default_docx_path
from docx.opc.part import PartFactory
from import DocumentPart
adejones / gist:14acbc9165121047cf106ca32379c854
Created Mar 22, 2019
macOS pyenv install build failure help
View gist:14acbc9165121047cf106ca32379c854
# Xcode cli tools must be installed first, they have to be reinstalled after macOS version upgrades
xcode-select --install
# make sure Homebrew is up to date
brew update && brew upgrade
# change the version to be whichever one is failing
CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install -v 3.7.2
# found here:
hdiutil attach /Applications/Install\ OS\ X\ El\ -noverify -nobrowse -mountpoint /Volumes/install_app
hdiutil convert /Volumes/install_app/BaseSystem.dmg -format UDSP -o /tmp/El\ Capitan
hdiutil resize -size 9g /tmp/El\ Capitan.sparseimage
hdiutil attach /tmp/El\ Capitan.sparseimage -noverify -nobrowse -mountpoint /Volumes/install_build
rm /Volumes/install_build/System/Installation/Packages
cp -rp /Volumes/install_app/Packages /Volumes/install_build/System/Installation/
cp -rp /Volumes/install_app/BaseSystem.chunklist /Volumes/install_build
cp -rp /Volumes/install_app/BaseSystem.dmg /Volumes/install_build
#!/usr/bin/env python
# Name:
# Purpose: Write log using TimedRotatingFileHandler
# Author: Adrian Jones
# Created: 2012-05-25
# TimedRotatingFileHandler: from source:
# Current 'when' events supported:
# S - Seconds
adejones / wine-app-with-mac-driver.script
Last active May 18, 2018
Script for Wine app using mac driver (now default) - open up Apple's Script Editor, edit , save as Application
View wine-app-with-mac-driver.script
on run
--edit this to be the correct location and file to run (typically only edit after the "drive_c")
set toRun to "$WINEPREFIX/drive_c/Program Files/MyProgram/MyProgramName.exe"
--edit winePrefix if you are not using the default prefix
set winePrefix to "$HOME/.wine"
--edit wineLocation if your wine install is not the default location
set wineLocation to "/usr/local/bin"