簡體   English   中英

如何使用 Python 將行從一個 CSV 復制到另一個 CSV 文件

[英]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 行並將它們附加到另一個文件中。 這需要通過幾個步驟來完成:

  1. in.csv讀取 50 行中的每一行,並將每一行附加到out.csv

  2. in.csv的剩余行寫入臨時文件。

  3. 刪除原始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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM