Python 按行拆分CSV文件
有人,请帮我检查一下这个代码。我对代码中的路径有点困惑。顺便说一句,代码是用于基于多行分割CSV文件的,在GitHub上获得了它,并且一直在使用它来尝试分割CSV文件,但是代码对我来说太混乱了 您也可以按照代码的链接进行操作 假设要拆分的csv的名称为depensive.csv, 源文件路径为C:\\Users\James\\Desktop\\Work, 目标路径为C:\\Users\James\\Desktop\\Work\\Processed, 结果\u文件名\u前缀被拆分 我的困惑是, 代码中的target_filename是否意味着我的csv文件为.csv?这个目标文件路径到底是什么 有人能帮我按照给定的路径和文件名重新格式化代码吗?我真的很感激Python 按行拆分CSV文件,python,csv,Python,Csv,有人,请帮我检查一下这个代码。我对代码中的路径有点困惑。顺便说一句,代码是用于基于多行分割CSV文件的,在GitHub上获得了它,并且一直在使用它来尝试分割CSV文件,但是代码对我来说太混乱了 您也可以按照代码的链接进行操作 假设要拆分的csv的名称为depensive.csv, 源文件路径为C:\\Users\James\\Desktop\\Work, 目标路径为C:\\Users\James\\Desktop\\Work\\Processed, 结果\u文件名\u前缀被拆分 我的困惑是, 代
import csv
import os
import sys
if len(sys.argv) != 5:
raise Exception('Wrong number of arguments!')
SOURCE_FILEPATH = sys.argv[1]
DEST_PATH = sys.argv[2]
FILENAME_PREFIX = sys.argv[3]
ROW_LIMIT = int(sys.argv[4])
def split_csv(source_filepath, dest_path, result_filename_prefix, row_limit):
"""
Split a source CSV into multiple CSVs of equal numbers of records,
except the last file.
The initial file's header row will be included as a header row in each split
file.
Split files follow a zero-index sequential naming convention like so:
`{result_filename_prefix}_0.csv`
:param source_filepath {str}:
File name (including full path) for the file to be split.
:param dest_path {str}:
Full path to the directory where the split files should be saved.
:param result_filename_prefix {str}:
File name to be used for the generated files.
Example: If `my_split_file` is provided as the prefix, then a resulting
file might be named: `my_split_file_0.csv'
:param row_limit {int}:
Number of rows per file (header row is excluded from the row count).
:return {NoneType}:
"""
if row_limit <= 0:
raise Exception('row_limit must be > 0')
with open(source_filepath, 'r') as source:
reader = csv.reader(source)
headers = next(reader)
file_number = 0
records_exist = True
while records_exist:
i = 0
target_filename = f'{result_filename_prefix}_{file_number}.csv'
target_filepath = os.path.join(dest_path, target_filename)
with open(target_filepath, 'w') as target:
writer = csv.writer(target)
while i < row_limit:
if i == 0:
writer.writerow(headers)
try:
writer.writerow(next(reader))
i += 1
except:
records_exist = False
break
if i == 0:
# we only wrote the header, so delete that file
os.remove(target_filepath)
file_number += 1
split_csv(SOURCE_FILEPATH, DEST_PATH, FILENAME_PREFIX, ROW_LIMIT)
target_filename是您希望输出文件具有的名称。 target_filepath是输出文件的路径,包括其名称。 在split_csv函数调用中: SOURCE_PATH是指向源文件的路径 DEST_PATH是输出文件所在文件夹的路径 FILENAME\u PREFIX是您希望输出文件名的开头
ROW_LIMIT是您希望写入输出文件的每个文件的最大行数。请在此处发布代码,而不是发布链接!显性.csv是源文件,target_filename.csv是将被拆分为位的结果文件的名称。target_filepath是要存储结果文件的位置。