我正在尝试将行从一个CSV复制到另一个CSV,并且还要在从第一个文件复制后删除行。
请参阅代码,它仅用于将特定行从一个CSV文件复制到另一个CSV文件,但它不会从文件1中删除行。
import csv
import os
File1 = 'in.csv'
File2 = 'out.csv'
with open(File1, "r") as r, open(File2, "a") as w:
reader = csv.reader(r, lineterminator = "\n")
writer = csv.writer(w, lineterminator = "\n")
for counter,row in enumerate(reader):
if counter<0: continue
if counter>50:break
writer.writerow(row)
with open(File1, "w") as r:
reader = csv.writer(r, lineterminator = "\n")
for counter,row in enumerate(reader):
if counter<0: continue
if counter>50:break
reader.writerow(row)
请让我知道在将行复制到文件2后如何工作,然后从文件1中删除这些行。
这是错误:
for counter,row in enumerate(reader):
TypeError: '_csv.writer' object is not iterable
答案 0 :(得分:0)
您似乎试图从一个文件移动前50行并将它们附加到另一个文件。这需要通过几个步骤完成:
从in.csv
读取50行中的每一行,并将每一行追加到out.csv
。
将in.csv
中的剩余行写入临时文件。
删除原始in.csv
文件,并将临时文件重命名为in.csv
。
例如:
import itertools
import os
file_in = 'in.csv'
file_out = 'out.csv'
file_temp = '_temp.csv'
with open(file_in, "rb") as f_input, open(file_out, "ab") as f_output, open(file_temp, "wb") as f_temp:
csv_input = csv.reader(f_input)
# Append first 50 rows to file_out
csv.writer(f_output).writerows(itertools.islice(csv_input, 0, 50))
# Write the remaining rows from file_in to file_temp
csv.writer(f_temp).writerows(csv_input)
# Rename f_temp to file_in, first remove existing file_in then rename temp file
os.remove(file_in)
os.rename(file_temp, file_in)