Meine Gedanken zur Python2.6-Befehlszeilen-App-Vorlage

Charakteristisch

Quelle

simple.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

from signal import signal, SIGPIPE, SIG_DFL
signal(SIGPIPE,SIG_DFL)

import sys

from logging import getLogger, StreamHandler, Formatter

logger = getLogger(__name__)

def global_loginit(logname=__name__, format="%(message)s", stream=sys.stderr, level=20, datefmt="%Y-%m-%dT%H:%M:%S" ):
    _logger = getLogger(logname)
    _logger.setLevel(level)
    _handle = StreamHandler(stream)
    _handle.setFormatter(Formatter(fmt=format,datefmt=datefmt))
    _logger.addHandler(_handle)
    return _logger

def main(opts):
    logger.info("Python {0}".format(sys.version))
    logger.warning("{0}".format(opts))
    logger.info("{0}".format(opts))
    logger.debug("{0}".format(opts))
    opts["consolelogger"].info("This is it")

def options(opt, add_func, help_tail):
  optadd=add_func(opt)
  optadd('-P', '--prof', default=False, action='store_true', help='get profile' + help_tail )
  optadd('-D', '--Debug', default=False, action='store_true', help='log debug' + help_tail)
  optadd('-Q', '--Quiet', default=False, action='store_true', help='log quiet' + help_tail)
  if type(opt).__name__.startswith("Arg"):
    optadd("args", type=str, nargs='*')
  return opt

def parsed_opts():
  try:
    import argparse
    description= "test"
    epilog = """epilog
    """
    opt = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter, description=description, epilog=epilog)
    add_func = lambda x: x.add_argument
    parsefunc = lambda x: dict(vars(x))
    help_tail=''
  except ImportError as e:
    import optparse
    opt = optparse.OptionParser()
    add_func = lambda x: x.add_option
    parsefunc = lambda x: dict(vars(x[0]).items() + [('args', x[1])])
    help_tail=' [default: %default]'
  return parsefunc( options(opt, add_func, help_tail).parse_args())


if __name__ == '__main__':
    opts = parsed_opts()

    loggercfg = {
      "format": "%(asctime)s.%(msecs).03d %(process)d %(module).4s %(levelname).4s %(lineno)d/%(funcName)s %(message)s",
      "level": 20 if (not opts["Debug"] and not opts["Quiet"]) else 10 if opts["Debug"] else 30
    }
    global_loginit(**loggercfg)
    opts["consolelogger"] = global_loginit(logname=__name__+"console",stream=sys.stdout)

    if opts['prof']:
      import cProfile
      cProfile.run('main(opts)')
      sys.exit(0)
    main(opts)

Recommended Posts

Meine Gedanken zur Python2.6-Befehlszeilen-App-Vorlage
Vorlage zum Erstellen von Befehlszeilenanwendungen in Python
Führen Sie den Unix-Befehl auf Python aus
Online-Übertragung mit Python
Verwenden Sie Python 3, das vom Befehlszeilentool unter macOS Catalina eingeführt wurde
Befehlszeilenargumentverarbeitung (Python docopt)
Python-Standardmodul, das in der Befehlszeile verwendet werden kann
[Python] Führen Sie Flask in Google App Engine aus
Zerlegen Sie Befehlsargumente in einer Zeile in Python
Verwenden von Djangos ImageField mit AppEngine / Python
Sie suchen in der Befehlszeile nach commandlinefu
Erstellen Sie eine Befehlszeilen-App in Python, um die Aktionen setup.py, argparse und GitHub zu verstehen
Korrespondenznotiz, wenn die Richtungstaste nicht in der Python-Befehlszeile verwendet werden kann
[Python] So testen Sie den Befehlszeilen-Parser-Klick
So empfangen Sie Befehlszeilenargumente in Python
Zeigen Sie den QR-Code schnell in der Befehlszeile an
Gewinnen Sie die Python + Flask-Web-App mit Jenkins
Tweet (API 1.1) mit Google App Engine für Python
Arduino-Entwicklung über die Kommandozeile: vim + platformio
Syntaxhervorhebung in der Befehlszeile mithilfe von Pylements
[Einführung in Udemy Python3 + Application] 67. Befehlszeilenargumente
Konvertieren Sie XLSX in CSV in der Befehlszeile
Führen Sie Route53 in der Befehlszeile mit AWS-CLI aus.
Denken Sie an selektive Schnittstellen in der Befehlszeile
Mein Numpy (Python)
Mein System (Python)
Mein Pyproj (Python)
Meine Pandas (Python)
Mein str (Python)
Python unter Windows
Mein Pyautogui (Python)
Twitter mit Python3
Python auf Mac
LINE Heroku Python
Mein PySide (Python)
Übergeben von Argumenten beim Aufrufen von Python-Skripten über Blender in der Befehlszeile
Mein Shutil (Python)
Meine Matplotlib (Python)
Python Argparse Vorlage
Mein Linux-Befehl
Meine Urllib (Python)
Mein Pyperclip (Python)
Mein sklearn (Python)
[Mein Memo] Python
Python auf Windbg
Mein ConfigParser (Python)
Mein Webdriver (Python)
Mein Arcpy (Python)
Anweisungen zur Verwendung der AWS-Befehlszeilenschnittstelle (Python / awscli) unter Mac OS X.
Mein win32gui (Python)
Mein Betriebssystem (Python)
[Python] Tkinter-Vorlage
Stellen Sie Python 3.6 / Django / Postgres-Webanwendungen in Azure bereit
python2 series / 3 series, Zeichencode und print-Anweisung / Befehlszeile
Geben Sie in Python einen Unterbefehl als Befehlszeilenargument an
Yum-Befehl zum Zugriff auf MySQL mit Python 3 unter Linux
Stellen Sie die Django-Anwendung in Google App Engine (Python3) bereit.
Verwendung von Django mit Google App Engine / Python
Lassen Sie Python in einer Zeile segfo, ohne ctypes zu verwenden
Multiplizieren Sie PDF mit OCR in der Befehlszeile unter Linux (Ubuntu).
Vergleich der Python-Befehlszeilenanalysebibliotheken (argparse, click, fire)