繁体   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