У меня есть программа python, которая преобразует файлы csv в файлы с разделителями '^'. Выходные файлы также имеют новые заголовки.
cc = input("Enter Code \t")
cn = input("Enter Item Number \t")
input_file = input("Enter input file \t")
act = input("Enter Action (Update- N/Delete -Y) \t")
def file_conversion(input_file, output_file_pattern, chunksize):
with open(input_file,"r+") as fin:
# ignore headers of input files
for i in range(1):
fin.__next__()
reader = csv.reader(fin, delimiter=',')
for i, chunk in enumerate(chunked(reader, chunksize)):
with open(output_file_pattern.format(i), 'w', newline='') as fout:
writer = csv.writer(fout,reader,delimiter='^')
writer.writerow(headers)
writer.writerows(chunk)
print("Successfully converted into", output_file_pattern)
Теперь программа работает. Я хочу добавить act,cc и cn в каждую строку выходных файлов-разделителей. Строки выходных файлов должны начинаться, как строка ниже
act^cc^cn^restofcsvdelimitierfiles.
chunked используется так, что если количество строк больше 10000 (в данном случае), будет создан новый выходной файл. Количество строк в выходном файле ограничено 10000. Если можно, можете привести пример?
Я хочу увидеть вывод chunked, чтобы я мог сказать, является ли он итерируемым. Я не знаю, откуда вы взяли эту функцию, так как этот код не включает в себя...
Я сделал это. Сначала я создал новый файл, в который добавлены act, cc и cn, а затем преобразовал его в файлы с разделителями.
Это решило мою проблему
def add_column_in_csv(input_file, output_file, transform_row,transform_row1,transform_row2):
with open(input_file, 'r') as read_obj:
with open(output_file, 'w', newline='') as write_obj:
reader = csv.reader(read_obj,delimiter=',')
writer = csv.writer(write_obj)
for row in reader:
transform_row(row,reader.line_num)
transform_row1(row,reader.line_num)
transform_row2(row,reader.line_num)
writer.writerow(row)
add_column_in_csv(path0,path1, lambda row, line_num: row.insert(0, act),lambda row, line_num: row.insert(1,cc),lambda row, line_num: row.insert(2,cn))
chunked не определен в этом фрагменте кода, но вы должны перебрать фрагменты в rows , а затем добавить act^cc^cn^ к строкам. Затем соберите строки обратно в новый фрагмент и напишите его.