각 줄마다 다른 수정 규칙이 필요할 수 있으므로 상당히 큰 CSV 파일을 가지고 있습니다. 각 CSV 파일은 다른 CSV에 적절하게 작성해야합니다. 서식 지정.큰 CSV 파일을 읽고 형식을 지정한 다음 쓸 수 있습니다.
현재 내가 가진 :
import multiprocessing
def read(buffer):
pool = multiprocessing.Pool(4)
with open("/path/to/file.csv", 'r') as f:
while True:
lines = pool.map(format_data, f.readlines(buffer))
if not lines:
break
yield lines
def format_data(row):
row = row.split(',') # Because readlines() returns a string
# Do formatting via list comprehension
return row
def main():
buf = 65535
rows = read(buf)
with open("/path/to/new.csv",'w') as out:
writer = csv.writer(f, lineterminator='\n')
while rows:
try:
writer.writerows(next(rows))
except StopIteration:
break
내가 map
를 통해 멀티 프로세싱을 사용하고 발전기와 메모리 과부하를 방지하고있어하더라도, 그것은 여전히 40,000 선을 처리하기 위해 2 분 동안 저를 잘합니다. 솔직히 그렇게 많이 받아 들여서는 안됩니다. 심지어 생성기 출력에서 중첩 된 목록을 생성하고 한 번에 하나의 큰 파일로 데이터를 쓰려고 시도했습니다. 이는 청크 별 방법과 마찬가지로 오래 걸립니다. 여기서 내가 뭘 잘못하고 있니?