Skip to content

Instantly share code, notes, and snippets.

@nick-youngblut
Created August 10, 2022 08:20
Show Gist options
  • Save nick-youngblut/f701d6910032ee24a2bb7aa807f9118e to your computer and use it in GitHub Desktop.
Save nick-youngblut/f701d6910032ee24a2bb7aa807f9118e to your computer and use it in GitHub Desktop.
boilerplate for argparse python script
#!/usr/bin/env python
from __future__ import print_function
import os
import sys
import re
import gzip
import bz2
import argparse
import logging
# logging
logging.basicConfig(format='%(asctime)s - %(message)s', level=logging.DEBUG)
# argparse
class CustomFormatter(argparse.ArgumentDefaultsHelpFormatter,
argparse.RawDescriptionHelpFormatter):
pass
desc = 'Template python script'
epi = """DESCRIPTION:
* placeholder1
* placehodler2
"""
parser = argparse.ArgumentParser(description=desc, epilog=epi,
formatter_class=CustomFormatter)
parser.add_argument('input_file', type=str,
help='Input file')
parser.add_argument('--param', type=str, default='test',
help='Test parameter')
parser.add_argument('--version', action='version', version='0.0.1')
# functions
def _open(infile, mode='rb'):
"""
Openning of input, regardless of compression
"""
if infile.endswith('.bz2'):
return bz2.open(infile, mode)
elif infile.endswith('.gz'):
return gzip.open(infile, mode)
else:
return open(infile)
def _decode(x):
"""
Decoding input, if needed
"""
try:
x = x.decode('utf-8')
except AttributeError:
pass
return x
## main interface function
def main(args):
pass
## script main
if __name__ == '__main__':
args = parser.parse_args()
main(args)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment