我试图将一个大的 csv 文件拆分成多个文件,为此我使用了这个代码片段。我正在使用 Python 3.7.7 并且在 Windows 操作系统上。我尝试添加 utf8 编码,但它仍然不起作用。你知道为什么吗?这是我的代码:import osdef split(filehandler, delimiter=',', row_limit=125000, output_name_template='jokes_%s.csv', output_path='.', keep_headers=True): """ Splits a CSV file into multiple pieces. A quick bastardization of the Python CSV library. Arguments: `row_limit`: The number of rows you want in each output file. 10,000 by default. `output_name_template`: A %s-style template for the numbered output files. `output_path`: Where to stick the output files. `keep_headers`: Whether or not to print the headers in each output file. Example usage: >> from toolbox import csv_splitter; >> csv_splitter.split(open('/home/ben/input.csv', 'r')); """ import csv reader = csv.reader(filehandler, delimiter=delimiter) current_piece = 1 current_out_path = os.path.join( output_path, output_name_template % current_piece ) print(current_out_path) current_out_writer = csv.writer(open(current_out_path, 'w', encoding='utf8', newline=''), delimiter=delimiter) current_limit = row_limit if keep_headers: headers = next(reader) current_out_writer.writerow(headers) for i, row in enumerate(reader): if i + 1 > current_limit: current_piece += 1 current_limit = row_limit * current_piece current_out_path = os.path.join( output_path, output_name_template % current_piece ) print(current_out_path) current_out_writer = csv.writer(open(current_out_path, 'w', encoding='utf8', newline=''), delimiter=delimiter) if keep_headers: current_out_writer.writerow(headers) current_out_writer.writerow(row)split(open('jokes.csv', 'r'))
1 回答
翻阅古今
TA贡献1780条经验 获得超5个赞
split(open('jokes.csv', 'r'))
你可以换个split(open('jokes.csv', 'r', encoding="utf8"))
试试。
添加回答
举报
0/150
提交
取消