로 읽지 않고 파이썬에서 그것에서 임의의 라인을 얻을 나는 어떤 CSV 텍스트 형식의 파일이 있습니다 파일은 3.5GB에 대한 있습니다텍스트 CSV 이진 파일을 변환 및 메모리
1.3, 0, 1.0
20.0, 3.2, 0
30.5, 5.0, 5.2
크기와 I를 유용한 시간 안에 팬더의 메모리로 그 중 어떤 것도 읽을 수 없습니다.
그러나 모든 파일을 읽을 필요가 없습니다. 원하는 작업은 파일에서 임의의 줄을 선택하고 거기에있는 값을 읽는 것입니다. 이론적으로는 파일 모든 필드의 크기가 같은 방식으로 형식이 지정됩니다 (예 : 이진 파일의 float16). 어떻게 변환이 완료된 후 나는 그것에서 임의의 선을 따기 가야 할, How to output list of floats to a binary file in Python
그러나 :
지금, 난 그냥 질문에 대한 답변에 명시된 NumPy와 방법을 사용하여 변환 할 수 있습니다 생각 ? 일반 텍스트 파일에서
은 그냥 할 수있는 :
import random
offset = random.randrange(filesize)
f = open('really_big_file')
f.seek(offset) #go to random position
f.readline() # discard - bound to be partial line
random_line = f.readline() # bingo!
하지만이 NumPy와 만든 바이너리 파일에서 작업 할 수있는 방법을 찾을 수 없습니다.
@TimPietzcker - 기본적으로 코드 스 니펫이 수행하는 작업이 아닌가요? 물론 그 방법으로 첫 번째 줄을 선택할 가능성을 없애줍니다 ... – mgilson
원본 텍스트 CSV의 줄이 다른 길이이기 때문에 더 큰 줄을 선호하는 편향을 얻을 수 있습니다. 더 작은 것의 대신에 뽑혔다. (즉, 예시 데이터에서, 제 3 라인은 제 1 라인보다 거의 30 % 더 높은 확률을 가질 것이다.) – jbssm
@jbssm - 흠 ... 흥미로운 점. – mgilson