【问题标题】:How to copy rows from one CSV to another CSV file using Python如何使用 Python 将行从一个 CSV 复制到另一个 CSV 文件
【发布时间】:2017-03-15 11:01:23
【问题描述】:

我正在尝试将行从一个 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

【问题讨论】:

  • 但这不起作用你能解决这个问题吗
  • 请提及您在运行此代码时遇到的错误?还提供您正在处理的示例数据。似乎主要是描述中的数据问题
  • @Sarjan:什么不起作用?您是否阅读了上述链接问题的答案? You can't remove rows from a file but you can rewrite it with only the ones you want.
  • 解决方案那里。阅读@ChankeyPathak 所说的; 您必须重写文件而不删除要删除的行

标签: python csv


【解决方案1】:

您似乎正试图从一个文件中移动前 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。

【讨论】:

  • 它对每个字符进行切片并追加。不从分隔符复制
  • 它采用带有逗号分隔符的标准 CSV 格式。原始脚本也是为 Python 2.x 设计的,我已经使用 Python 3.7 对其进行了更新和测试。
猜你喜欢
  • 2022-01-04
  • 2018-09-29
  • 1970-01-01
  • 2015-11-21
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 2021-02-26
  • 1970-01-01
相关资源
最近更新 更多