Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # coding: utf-8
- # %load nightsresize
- import struct
- import os
- import argparse
- import csv
- def main(args):
- struct_fmt = '@hhhHh'
- struct_len = struct.calcsize(struct_fmt)
- struct_unpack = struct.Struct(struct_fmt).unpack_from
- in_filename = args.infile
- if not os.path.isfile(in_filename):
- raise ValueError('Path %s not found or is not a file' % in_filename)
- out_filename = args.outfile or '{}{}.{}'.format(os.path.splitext(in_filename)[0], '-THINGS', 'lmp')
- print('Reading %s' % in_filename)
- def read_chunks(f, length):
- while True:
- data = f.read(length)
- if not data: break
- yield data
- header = args.header
- results = []
- with open(in_filename, 'r') as f:
- r = csv.reader(f)
- for row in r:
- if header:
- header = False
- continue
- results.append((int(row[0]), int(row[1]), 0, args.thingnum, int(row[2])*16))
- # csv: x, y, z
- # thing entry: x, y, 0 for angle, thing num, z*16 for z
- out = bytes().join((struct.pack(struct_fmt, *entry) for entry in results))
- with open(out_filename, 'wb') as f:
- f.write(out)
- print('Saved %s things to %s' % (len(results), out_filename))
- def get_args():
- parser = argparse.ArgumentParser()
- parser.add_argument("infile", type=str,
- help="Path to file")
- parser.add_argument('-out', '-o', dest='outfile', type=str, help='Path to output file. Default: append -THINGS to input filename', default=None)
- parser.add_argument('-header', '-d', action='store_true', help='Specify if input CSV has a header row. Default: assume it does not', default=False)
- parser.add_argument('-type', '-t', dest='thingnum', type=int, help='Thing type to write. Default: 300 (Ring)', default=300)
- args = parser.parse_args()
- return args
- if __name__ == '__main__':
- main(get_args())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement