2017-09-24 88 views
0

我试图循环播放一个大的CSV文件,将所有行但变量名写入一个新文件,同时以有效的方式播放。我正在使用来自itertools的islice。有没有人有任何提示比我的代码更有效的方式?循环播放大的CSV文件

from itertools import islice 
var = len(csv) 

with open("csv_file1.csv") as file1, open("trial1.csv", 'w') as file2: 
    head1 = list(islice(file1, var))[0].split(",") 
    while (var > 1): 
     for line in head1: 
      file2.write(str(head1)) 
      file2.write("\n") 
      var = var - 1 
      print(var) 
file2.close() 
+0

你是什么意思的变量名称在CSV文件中,你的意思是第一行(头)?如果不是,你可以向我们展示你正在使用的csv的一部分。 – DobromirM

+0

另外,Python有csv模块,可以更好地提取CSV文件的语法细节。 –

回答

2
  • 使用csv模块,如意见提出
  • 包装你传入的文件到一台发电机,这是与任何流处理,包括CSV文件
一个很好的做法
def read_csv(filename): 
    with open(filename) as f: 
     reader = csv.reader(f) 
     for row in reader: 
      yield row 

之后read_csv("csv_file1.csv")为您提供了一个生成器,您可以使用for循环或应用地图/过滤器函数来它取决于行转换的逻辑。