Skip to main content

python module for command-line filter

Project description

Name

jjcli - python module for command-line filter

Synopsis

as ascript:

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

as a module:

from jjcli import *       ## re.* functions also imported
c=clfilter(opt="do:")     ## options in c.opt  (...if "-d" 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 opinioned Python module that tries to simplify the creation of unix filters. It is based on:

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

Regular expressions

We want to have all re.* functions available (as if they were native functions).

In order to enable re flags, use: re.I re.X re.S

Subprocesses (qx, qxlines, qxsystem)

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

Execute command return its stdout

qx(*x)      →  returns    subprocess.getoutput(x)

Execute command return its stdout lines

qxlines(*x) →  returns    subprocess.getoutput(x).splitlines()

Execute command -- system

qxsystem(*x) →  calls     subprocess.call(x,shell=True)

Other functions

slurpurlutf8(self,f)

filename    = lambda s : F.filename()      # inherited from fileinput
lineno      = lambda s : F.lineno()
filelineno  = lambda s : F.filelineno()
parno       = lambda s : s.parno_          # paragraph number
fileparno   = lambda s : s.fileparno_
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.15.tar.gz (3.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jjcli-0.1.15-py2.py3-none-any.whl (4.1 kB view details)

Uploaded Python 2Python 3

File details

Details for the file jjcli-0.1.15.tar.gz.

File metadata

  • Download URL: jjcli-0.1.15.tar.gz
  • Upload date:
  • Size: 3.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.23.0

File hashes

Hashes for jjcli-0.1.15.tar.gz
Algorithm Hash digest
SHA256 f8004ddb22f83f0793ff0973b43f9847ea9470efc80b65cc30ba809c66c59716
MD5 9c5987abf910ba241e3b07ee65aa65c0
BLAKE2b-256 589e06b5a0582e0ea079b60bc0ff370a10c17b0776c9f2739918f4cb0ab8a7ac

See more details on using hashes here.

File details

Details for the file jjcli-0.1.15-py2.py3-none-any.whl.

File metadata

  • Download URL: jjcli-0.1.15-py2.py3-none-any.whl
  • Upload date:
  • Size: 4.1 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.23.0

File hashes

Hashes for jjcli-0.1.15-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 37f457f8d903ca44c26c2db377afaf3eb4eb1dc5af0d68bc01c361fe5078bb9f
MD5 3193505c425fd6df3e22cbe4e4c4da5a
BLAKE2b-256 d6ebd6b581acaa59bf7eb015b735f15e56a253e91c05e8fcd44a050be3a71c81

See more details on using hashes here.

Supported by

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