मैं बड़े डेटा के साथ काम कर रहा हूँ में बड़ी मात्रा में डेटा को पढ़ने के लिए इतना डाटा पढ़ने में एक अच्छा तरीका खोजने के तरीके वास्तव में महत्वपूर्ण है। मैं बस थोड़ा अलग पढ़ने के तरीकों के बारे में उलझन में हूँ।अलग, अजगर
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
2 और 3 के बीच क्या अंतर है? मुझे लगता है कि उनका मेमोरी उपयोग वही है। islice() भी पहली स्मृति में पूरे फ़ाइल को लोड करने की जरूरत है (लेकिन सिर्फ बाद में थोड़ा करके बिट लेने के लिए)। और मैंने सुना है कि 4 विधि कम से कम स्मृति लगता है, यह वास्तव में थोड़ा थोड़ा करके, प्रसंस्करण है ना? 10GB पैमाने पर फ़ाइल के लिए, जो फाइल पढ़ने विधि की सलाह देंगे? किसी भी विचार/जानकारी का स्वागत है। THX
संपादित करें: मुझे लगता है मेरी समस्या में से एक मैं बेतरतीब ढंग से कभी कभी विशिष्ट लाइनों बाहर लेने की जरूरत है। कहें:
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])
और फिर sth।
with open(file,'r') as f,
for line in f:
# process line
काम नहीं कर सकता, क्या मैं सही हूँ? -
with open(...) as f:
for line in f:
<do something with line>
with
बयान हैंडल
http://www.dabeaz.com/generators/
इसलिए बड़ी टेक्स्ट फ़ाइल में यादृच्छिक रेखा पहुंच की आवश्यकता है? –
अच्छा, वास्तव में जरूरी नहीं है। मूल रूप से अभी भी रेखा से लाइन की प्रक्रिया; या एक समूह के रूप में एन लाइनें। – user815408