Tôi đang xử lý dữ liệu lớn, vì vậy việc tìm kiếm một cách tốt để đọc dữ liệu thực sự quan trọng. Tôi chỉ hơi bối rối về các phương pháp đọc khác nhau.Các cách khác nhau để đọc dữ liệu lớn trong python
1.f=gzip.open(file,'r')
for line in f:
process line
#how can I process nth line? can I?
2.f=gzip.open(file,'r').readlines()
#f is a list
f[10000]
#we can process nth line
3.f=gzip.open(file,'r')
while True:
linelist=list(islice(f,4))
4.for line in fileinput.input():
process line
Sự khác nhau giữa 2 và 3 là gì? Tôi chỉ thấy việc sử dụng bộ nhớ của họ là như nhau. islice() cũng cần phải tải toàn bộ tập tin vào bộ nhớ (nhưng sau này chỉ mất chút thời gian). Và tôi nghe phương pháp thứ 4 là bộ nhớ ít tốn kém nhất, nó thực sự xử lý từng chút một, phải không? Đối với tệp có kích thước 10GB, bạn nên giới thiệu phương pháp đọc tệp nào? Bất kỳ suy nghĩ/thông tin được hoan nghênh. thx
chỉnh sửa: Tôi nghĩ rằng một trong những vấn đề của tôi là tôi cần phải chọn ra các dòng cụ thể ngẫu nhiên đôi khi. nói:
f1=open(inputfile1, 'r')
while True:
line_group1 = list(islice(f1, 3))
if not line_group1:
break
#then process specific lines say, the second line.
processed 2nd line
if (....):
LIST1.append(line_group1[0])
LIST1.append(processed 2nd line)
LIST1.append(line_group1[2])
Và sau đó sth. như
with open(file,'r') as f,
for line in f:
# process line
có thể không hoạt động, tôi có chính xác không?
vì vậy, có yêu cầu phải có quyền truy cập dòng ngẫu nhiên vào tệp văn bản lớn không? –
Vâng, thực sự không nhất thiết. Về cơ bản vẫn xử lý từng dòng một; hoặc N dòng như một nhóm. – user815408