![](/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.