python - पायथन-एक बार में एक फ़ाइल से 1000 लाइनें पढ़ते हैं



python-2.7 (1)

जैसा कि @ ईव.कॉन्विस ने कहा था कि आपका लूप ठीक से काम नहीं करता है।

मैं इस तरह एक समय में डेटा के अंश के लिए उपज समारोह के लिए जाने की अनुशंसा करता हूं:

def get_line():
    with open('your file') as file:
        for i in file:
            yield i

lines_required = 1000
gen = get_line()
chunk = [next(gen) for i in range(lines_required)]

मैंने इसे चेक किया है, यह और यह

तीसरे कड़ी का जवाब अभी तक दिख रहा था, लेकिन उसने नौकरी नहीं की।

मेरे पास कोई हल नहीं हो सकता है जहां पूरी फाइल मुख्य मेमोरी में लाई जाती है, क्योंकि जिन फ़ाइलों के साथ मैं काम कर रहा हूं, वे बहुत बड़े होंगे। इसलिए मैंने 3 islice में दिखाए अनुसार islice का उपयोग करने का निर्णय लिया। पहले 2 लिंक अप्रासंगिक थे क्योंकि उन्होंने इसे केवल 2 लाइनों के लिए उपयोग किया था या 1000 वर्ण पढ़े थे। जबकि मुझे 1000 लाइनों की आवश्यकता है for now N is 1000

मेरी फ़ाइल में 1 मिलियन लाइन हैं:

नमूना:

1 1 1
1 2 1
1 3 1
1 4 1
1 5 1
1 6 1
1 7 1
1 8 1
1 9 1
1 10 1

इसलिए यदि मैं एक समय में 1000 लाइनों को पढ़ता हूं, तो मुझे 1000 गुना तक जाना चाहिए, फिर भी जब मैं p यह जांचने के लिए कि कितने बार मैंने किया है, यह 1000 पर नहीं रोकता है यह 1400 सेकंड के लिए अपने कार्यक्रम को चलाने के बाद 1 19038838 पर पहुंच गया !!

कोड:

def _parse(pathToFile, N, alg):
    p = 1
    with open(pathToFile) as f:
        while True:
            myList = []
            next_N_lines = islice(f, N)
            if not next_N_lines:
                break
            for line in next_N_lines:
                s = line.split()
                x, y, w = [int(v) for v in s]
                obj = CoresetPoint(x, y)
                Wobj = CoresetWeightedPoint(obj, w)
                myList.append(Wobj)
            a = CoresetPoints(myList)
            client.compressPoints(a) // This line is not the problem
            print(p)
            p = p+1
    c = client.getTotalCoreset()
    return c

मैं क्या गलत कर रहा हूं ?





python-2.7