在csv文件中循环以创建较小的操作文件,循环不激活

2024-10-02 04:24:27 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码旨在循环浏览一个大型csv文件,一次获取20个观测数据块,并将它们加载到一个较小的文件中,该文件将用于地理编码。循环似乎没有运行,并且已经不知道为什么(除了end之外,没有超过第一行的内容被打印出来)

SalesLoad = open('C:\Users\DillonSaxe\Real Estate\Chi address 2000-2015.csv')
Sales = csv.reader(SalesLoad)
Storage = []
row_count = sum(1 for row in Sales)
print row_count
for row in Sales:
    if Sales.line_num == 1:
        Header = row
        print header
    elif Sales.line_num%20 != 0 and Sales.line_num != row_count:
        Storage.append(row)
    else:
        Storage.append(row)
        print row
        TempLoad = open('C:\Users\DillonSaxe\Real Estate\Temp Geocode File.csv', 'wb')
        TempGeocode = csv.writer(TempLoad)
        TempGeocode.writerow(Header)
        for item in Storage:
            TempGeocode.writerow(item)
        TempLoad.close()
SalesLoad.close()
print 'Done'

Tags: 文件csvinforcountlinestorageopen
2条回答

您可以使用enumerate测试行号并迭代文件一次

  with open('C:\Users\DillonSaxe\Real Estate\Chi address 2000-2015.csv', 'rb') as f
    reader = csv.reader(f)
    storage = [line for idx, line in enumerate(reader) if idx%20]

  with open('C:\Users\DillonSaxe\Real Estate\Temp Geocode File.csv', 'wb') as f
    writer = csv.writer(f)
    writer.writerows(storage )

  print 'Done'

row_count = sum(1 for row in Sales)将读取器放在文件的底部。在该行之后添加SalesLoad.seek(0),或者重构循环以不需要行数

相关问题 更多 >

    热门问题