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-ductWe have a file fruits.csv with the following contents:
fruit,price
apple,2.50
banana,3.00
strawberry,1.50Let'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:
3You 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.00If 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.00If 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.50You can run the tests with the pytest package:
pytest