Skip to main content

python module for command-line filter

Project description

##Name

jjcli - python module for command-line filter

##Synopsys

jjcli skel     ## for a initial filter skeleton
jjcli          ## for manual

--

from jjcli import *       ## re.* functions also imported
c=clfilter(opt="do:")     ## options in c.opt;
                          ##    autostrip         (def=True)
                          ##    inplace           (def=False) 
                          ##    fs (for csvrow()) (def=",")

for line in c.input():...    ## process one rstriped line at the time
for txt in c.slurp():...     ## process one striped text at the time
   ## process txt            ##   (end of line spaces and \r also removed)
for par in c.paragraph():... ## process one striped paragraph at the time
for tup in c.csvrow():...    ## process one csv row at the time
for tup in c.tsvrow():...    ## process one tsv row at the time

c.lineno()                ## line number
c.filelineno()
c.parno()                 ## paragraph number
c.fileparno()
c.filename()              ## filename or "<stdin>"
c.nextfile()
c.isfirstline()

##Description

jjcli is a python module that tries to simplify the creation of unix filters by importing:

  • getopt (for command line options ans args)
  • fileinput (for [files/stdin] arguments)
  • re (regular expressions)
  • csv (for csv and tsv inputs)
  • urllib.request (to deal with input argumens that are url)
  • subprocess

regular expressions

imports all functions from re.*
Use re.I re.X re.S   for regexp flags

subprocesses (qx, qxlines, qxsystem)

a=qx( "ls" )
for x in qxlines("find | grep '\.jpg$'"): 
  ...
qxsystem("vim myfile")

execute command return its stdout

def qx(*x)      : return subprocess.getoutput(x)

execute command return its stdout lines

def qxlines(*x) : return subprocess.getoutput(x).splitlines()

execute command -- system

def qxsystem(*x): subprocess.call(x,shell=True)

Other functions

def slurpurlutf8(self,f):

filename    = lambda s : F.filename()      # inherited from fileinput
filelineno  = lambda s : F.filelineno()
lineno      = lambda s : F.lineno()
fileparno   = lambda s : s.fileparno_
parno       = lambda s : s.parno_
nextfile    = lambda s : F.nextfile()
isfirstline = lambda s : F.isfirstline()
close       = lambda s : F.close()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jjcli-0.1.13.tar.gz (3.0 kB view hashes)

Uploaded Source

Built Distribution

jjcli-0.1.13-py2.py3-none-any.whl (4.0 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page