【发布时间】:2016-12-22 15:23:24
【问题描述】:
我发现 this code 使用 python 分割一个 CSV 文件。
当 A 列发生变化时,我需要拆分 3,000,000 条记录 CSV 文件。 我还需要向表中添加另外 2 个字段
- 空白(在每行旁边添加一个逗号)。
- 在最后一个字段中添加一个日期,但它应该要求我提供日期。
有人能帮我在这段代码中添加两件事吗?
- 提示添加更多字段
-
提示字段中应包含的内容
我正在复制之前包含的链接中的代码
#!/usr/bin/env python3 import binascii import csv import os.path import sys from tkinter.filedialog import askopenfilename, askdirectory from tkinter.simpledialog import askinteger def split_csv_file(f, dst_dir, keyfunc): csv_reader = csv.reader(f) csv_writers = {} for row in csv_reader: k = keyfunc(row) if k not in csv_writers: csv_writers[k] = csv.writer(open(os.path.join(dst_dir, k), mode='w', newline='')) csv_writers[k].writerow(row) def get_args_from_cli(): input_filename = sys.argv[1] column = int(sys.argv[2]) dst_dir = sys.argv[3] return (input_filename, column, dst_dir) def get_args_from_gui(): input_filename = askopenfilename( filetypes=(('CSV', '.csv'),), title='Select CSV Input File') column = askinteger('Choose Table Column', 'Table column') dst_dir = askdirectory(title='Select Destination Directory') return (input_filename, column, dst_dir) if __name__ == '__main__': if len(sys.argv) == 1: input_filename, column, dst_dir = get_args_from_gui() elif len(sys.argv) == 4: input_filename, column, dst_dir = get_args_from_cli() else: raise Exception("Invalid number of arguments") with open(input_filename, mode='r', newline='') as f: split_csv_file(f, dst_dir, lambda r: r[column-1]+'.csv') # if the column has funky values resulting in invalid filenames # replace the line from above with: # split_csv_file(f, dst_dir, lambda r: binascii.b2a_hex(r[column-1].encode('utf-8')).decode('utf-8')+'.csv')
谢谢
【问题讨论】:
标签: python-3.x csv export-to-csv