![](/img/trans.png)
[英]How do I copy only the required rows from one csv file to other csv file using python?
[英]How to copy rows from one CSV to another CSV file using Python
我试图将行从一个 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
您似乎试图从一个文件中移动前 50 行并将它们附加到另一个文件中。 这需要通过几个步骤来完成:
从in.csv
读取 50 行中的每一行,并将每一行附加到out.csv
。
将in.csv
的剩余行写入临时文件。
删除原始in.csv
文件并将临时文件重命名为in.csv
。
例如:
import itertools
import csv
import os
file_in = 'in.csv'
file_out = 'out.csv'
file_temp = '_temp.csv'
with open(file_in, "r", newline='') as f_input, \
open(file_out, "a", newline='') as f_output, \
open(file_temp, "w", newline='') 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)
这假设您有一个标准的逗号分隔文件,并且您使用的是 Python 3.x。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.