upgrade csv_get to python
This commit is contained in:
43
csv_get
43
csv_get
@@ -1,19 +1,26 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env python3
|
||||||
#check if comma or semicolon
|
import csv
|
||||||
if [[ $( grep -c ',' $1 ) -gt $( grep -c ';' $1 ) ]]
|
import argparse
|
||||||
then
|
import sys
|
||||||
delim=','
|
|
||||||
else
|
|
||||||
delim=';'
|
|
||||||
fi
|
|
||||||
|
|
||||||
file=$1
|
def main():
|
||||||
shift
|
parser = argparse.ArgumentParser()
|
||||||
#build cut
|
parser.add_argument('-c', type=int, dest='columns', action="append")
|
||||||
cut_cmd="cut -d${delim} -f"
|
parser.add_argument('infile', nargs='+', type=argparse.FileType('rt'))
|
||||||
#for option in $* ; do
|
args = parser.parse_args()
|
||||||
#head -n1 $file | cut -d${delim} -f${option}
|
if args.columns is None or len(args.columns) == 0:
|
||||||
#done
|
args.columns=[0]
|
||||||
cut_cmd="${cut_cmd}$(echo ${*} | tr ' ' ',') ${file}"
|
for file in args.infile:
|
||||||
#echo ${cut_cmd%,}
|
csv_infile=csv.reader(file)
|
||||||
$(echo $cut_cmd)
|
for row in csv_infile:
|
||||||
|
try:
|
||||||
|
outrow = [row[index] for index in args.columns]
|
||||||
|
print('\t'.join(outrow))
|
||||||
|
except IndexError:
|
||||||
|
print("No such column.")
|
||||||
|
print("Input has columns: {}".format(",".join([str(x) for x in range(len(row))])))
|
||||||
|
print("You selected {}".format(args.columns))
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
|
|||||||
Reference in New Issue
Block a user