parser = argparse.ArgumentParser()
parser.add_argument("input_file", help='input name of the csv file')
parser.add_argument("output_file", help='name of the output file you want')
parser.add_argument("rows", help='input number of rows you want to divide your file', type=int)
args = parser.parse_args()
location = os.path.join(my_path, args.input_file)
if os.path.exists(location):
with open(location, 'r') as my_inp_file:
my_file_reader = csv.reader(my_inp_file)
data = list(my_file_reader)
row_count = len(data)
if row_count < args.rows:
print("You entered bigger number of rows than file has")
else:
field_names = data[0]
parts = data[1:]
# for x in my_file_reader:
# parts.append(x)
number_of_files = int(math.ceil((row_count-1)/args.rows))
for a in range(number_of_files):
out = open((args.output_file + str(a) + ".csv"), "w")
spamwriter = csv.writer(out)
spamwriter.writerow(field_names)
print("====================")
for q in range(args.rows):
try:
spamwriter.writerow(parts[q])
print(parts[q])
del parts[q]
except IndexError:
continue
out.close()
else:
print("There is no such file...")
cGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQpwYXJzZXIuYWRkX2FyZ3VtZW50KCJpbnB1dF9maWxlIiwgaGVscD0naW5wdXQgbmFtZSBvZiB0aGUgY3N2IGZpbGUnKQpwYXJzZXIuYWRkX2FyZ3VtZW50KCJvdXRwdXRfZmlsZSIsIGhlbHA9J25hbWUgb2YgdGhlIG91dHB1dCBmaWxlIHlvdSB3YW50JykKcGFyc2VyLmFkZF9hcmd1bWVudCgicm93cyIsIGhlbHA9J2lucHV0IG51bWJlciBvZiByb3dzIHlvdSB3YW50IHRvIGRpdmlkZSB5b3VyIGZpbGUnLCB0eXBlPWludCkKYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKbG9jYXRpb24gPSBvcy5wYXRoLmpvaW4obXlfcGF0aCwgYXJncy5pbnB1dF9maWxlKQppZiBvcy5wYXRoLmV4aXN0cyhsb2NhdGlvbik6CiAgICB3aXRoIG9wZW4obG9jYXRpb24sICdyJykgYXMgbXlfaW5wX2ZpbGU6CiAgICAgICAgbXlfZmlsZV9yZWFkZXIgPSBjc3YucmVhZGVyKG15X2lucF9maWxlKQogICAgICAgIGRhdGEgPSBsaXN0KG15X2ZpbGVfcmVhZGVyKQogICAgICAgIHJvd19jb3VudCA9IGxlbihkYXRhKQogICAgICAgIGlmIHJvd19jb3VudCA8IGFyZ3Mucm93czoKICAgICAgICAgICAgcHJpbnQoIllvdSBlbnRlcmVkIGJpZ2dlciBudW1iZXIgb2Ygcm93cyB0aGFuIGZpbGUgaGFzIikKICAgICAgICBlbHNlOgogICAgICAgICAgICBmaWVsZF9uYW1lcyA9IGRhdGFbMF0KICAgICAgICAgICAgcGFydHMgPSBkYXRhWzE6XQogICAgICAgICAgICAjIGZvciB4IGluIG15X2ZpbGVfcmVhZGVyOgogICAgICAgICAgICAjICAgICBwYXJ0cy5hcHBlbmQoeCkKICAgICAgICAgICAgbnVtYmVyX29mX2ZpbGVzID0gaW50KG1hdGguY2VpbCgocm93X2NvdW50LTEpL2FyZ3Mucm93cykpCiAgICAgICAgICAgIGZvciBhIGluIHJhbmdlKG51bWJlcl9vZl9maWxlcyk6CiAgICAgICAgICAgICAgICBvdXQgPSBvcGVuKChhcmdzLm91dHB1dF9maWxlICsgc3RyKGEpICsgIi5jc3YiKSwgInciKQogICAgICAgICAgICAgICAgc3BhbXdyaXRlciA9IGNzdi53cml0ZXIob3V0KQogICAgICAgICAgICAgICAgc3BhbXdyaXRlci53cml0ZXJvdyhmaWVsZF9uYW1lcykKICAgICAgICAgICAgICAgIHByaW50KCI9PT09PT09PT09PT09PT09PT09PSIpCiAgICAgICAgICAgICAgICBmb3IgcSBpbiByYW5nZShhcmdzLnJvd3MpOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgc3BhbXdyaXRlci53cml0ZXJvdyhwYXJ0c1txXSkKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQocGFydHNbcV0pCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBwYXJ0c1txXQogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQoKICAgICAgICAgICAgICAgIG91dC5jbG9zZSgpCgplbHNlOgogICAgcHJpbnQoIlRoZXJlIGlzIG5vIHN1Y2ggZmlsZS4uLiIp