Python wrapper you may use to call qsv commands using duct.py for composability.
This library is compatible with qsv v0.128.0. Not all commands are available (see src/qsv/__init__.py
for available commands).
Make sure you have qsv installed on your system first and can access it anywhere as a PATH
command.
To install this library run:
pip install qsv-duct
We have a file fruits.csv
with the following contents:
fruit,price
apple,2.50
banana,3.00
strawberry,1.50
Let's count the total number of non-header rows in fruits.csv
using qsv.count
:
import qsv
qsv.count("fruits.csv", run=True)
The following output gets printed to stdout:
3
You may want to save the output value to a variable and use it in your code. Use the read
parameter instead of run
. For example:
non_header_row_count = qsv.count("fruits.csv", read=True)
print(non_header_row_count)
Since this library uses duct.py, you may access the command as an Expression
type by not passing read
and run
.
For example, let's say we want to get the first two rows of fruits.csv
with qsv.slice
. Normally we would use run
to run the command:
qsv.slice("fruits.csv", length=2, run=True)
fruit,price
apple,2.50
banana,3.00
If we want to display this output in a pretty format, we can pipe qsv.slice
into qsv.table
:
qsv.slice("fruits.csv", length=2).pipe(qsv.table()).run()
fruit price
apple 2.50
banana 3.00
If you use the duct.py
library you can also pipe qsv commands with other bash-related commands using the duct
library's cmd
function. For example:
import qsv
from duct import cmd
cmd("cat", "fruits.csv").pipe(qsv.table()).run()
fruit price
apple 2.50
banana 3.00
strawberry 1.50
You can run the tests with the pytest package:
pytest