Найти - Пользователи
Полная версия: Как ускорить работу с csv файлами?
Начало » Python для новичков » Как ускорить работу с csv файлами?
1
Luke
Есть куча файлов csv примерно по 150 мегабайт каждый.
Нужно выбрать одну колонку и записать в txt файлы, для передачи в другую программу (понимает только txt). Написал такой скрипт:
#!/usr/bin/env python
# -*- coding: cp1251 -*-
import sys
import csv
filename = sys.path[0]+"\\2010-03"
def readdata(filename):
	data=""
	with open(filename, 'rb') as hfile:
		oreader = csv.reader(hfile, delimiter=',')
		for row in oreader:
			data=data+row[2]+"\n"
	return data
def savedata(data,filename):
	with open(filename, 'w') as hfile:
		hfile.write(data)
	return
data = readdata(filename+".csv")
savedata(data,filename+".txt")
raw_input("Done. Press Enter for exit")
Он работает , но очень медленно.
Как можно ускорить работу с csv?
py.user.next
Luke
filename = sys.path[0]+"\\2010-03"
склеивай пути через os.path.join()

with open(ifname, 'rb') as ihfile, \
     open(ofname, 'w') as ohfile:
    oreader = csv.reader(ihfile, delimiter=',')
    for row in oreader:
        print >>ohfile, row[2]
проверь скорость
Luke
Спасибо. Невероятно, так намного быстрей. Неужели вывод в файл работает быстрей чем “сложение” строк в память ? А если надо будет получить эту колонку в память как поступить?
py.user.next
думаю, это связано с тем, что строка - immutable object, следовательно, ей нужно каждый раз заново перезаписываться в память

Luke
А если надо будет получить эту колонку в память как поступить?
попробуй список слов, который затем один раз передаётся в ' '.join()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB