使用Python复制n次行数,并将其写入其他文件中

使用Python复制n次行数,并将其写入其他文件中,python,csv,Python,Csv,您好,我正在编写一个简单的脚本,从一个csv文件中复制一组行,并在其他文件中粘贴N次 我无法将结果写入其他文件 请查找以下代码: import csv for i in range(2): with open('C:\\Python\\CopyPaste\\result2.csv', 'r') as fp: data = fp.readlines() fp.close() with open('C:\\Python\\CopyPaste\\mydata.csv'

您好,我正在编写一个简单的脚本,从一个csv文件中复制一组行,并在其他文件中粘贴N次

我无法将结果写入其他文件

请查找以下代码:

import csv
for i in range(2):
    with open('C:\\Python\\CopyPaste\\result2.csv', 'r') as fp:
        data = fp.readlines()
    fp.close()

with open('C:\\Python\\CopyPaste\\mydata.csv', 'w') as mycsvfile:
    thedatawriter = csv.writer(mycsvfile)
    for row in data:
        thedatawriter.writerow(row)

我想你的问题是:读取一个.csv文件,然后将数据写入另一个.csv文件N次

如果我的认识是正确的,我的建议是使用熊猫图书馆,这非常方便

比如:

import pandas as pd

df = pd.read_csv('origin.csv')
df.to_csv('output.csv')

假设输入和输出CSV文件的格式相同,只需将输入文件读入字符串,然后将其写入输出文件
N
次:

N = 3

with open('C:\\Python\\CopyPaste\\result2.csv', 'r') as infile,\
         open('C:\\Python\\CopyPaste\\mydata.csv', 'w') as outfile:
    data = fp.read()    # read entire contents of input file into data

    for i in range(N):
        outfile.write(data)
上面逐字回答了问题,但是,它将复制标题行
N
次,可能不是您想要的。您可以这样做:

import csv

N = 3

with open('C:\\Python\\CopyPaste\\result2.csv', 'r') as infile,\
         open('C:\\Python\\CopyPaste\\mydata.csv', 'w') as outfile:
    reader = csv.reader(infile)
    writer = csv.writer(outfile)
    writer.writerow(next(reader))    # reads header line and writes it to output file
    data = [row for row in reader]    # reads the rest of the input file
    for i in range(N):
        writer.writerows(data)

此代码从输入文件中读取第一行作为头,并将其写入输出CSV文件一次。然后,剩余的行从输入文件读取到
数据
列表中,并在输出文件中复制
N
次。

为什么要打开并读取输入文件两次?顺便说一句,当您使用
with
打开
fp
时,您不应该使用
fp.close()
。抱歉,我对python非常陌生,我在google上看到了不同的代码,并尝试在此基础上构建此代码。非常感谢。或者只做
outfile.write(data*N)
,但我猜您的版本使用的内存更少。@PM2Ring:谢谢您选择了错误,修复了。如果输入文件很大,最好是
mmap
它,但是OP似乎没有这个问题。我怀疑在这个阶段使用
mmap
可能对OP来说有点太高级了。。。