使用Python复制n次行数,并将其写入其他文件中
您好,我正在编写一个简单的脚本,从一个csv文件中复制一组行,并在其他文件中粘贴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'
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来说有点太高级了。。。