Reading several lines in a .csv file
<p>I want to read several lines of an CSV file. I am opening a list and append the one row to the list. Then I try to print the list. But the list is empty. The CSV file looks as following:</p>

<pre><code>`hallo;das;ist;ein;test;der;hoffentlich;funktioniert;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert1;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert2;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert3;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert4;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert5;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert6;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert7;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert8;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert9;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert10;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert11;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert12;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert13;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert14;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert15;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert16;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert17;fingerscrossed;
`
</code></pre>

<p>This is my Code:</p>

<pre><code>import csv
spamreader = csv.reader(open('test.csv'), delimiter = ';')

verbraeuche_ab_reset = []


def berechne_gemittelten_verbrauch():
    anzahl_zeilen = sum(1 for row in spamreader)
    for row in spamreader:
        if spamreader.line_num &gt; 9 and spamreader.line_num &lt; anzahl_zeilen:
            verbrauch_ab_reset = row[7]

            verbraeuche_ab_reset.append(verbrauch_ab_reset)

    print(verbraeuche_ab_reset)
    print(anzahl_zeilen)

berechne_gemittelten_verbrauch()
</code></pre>

<p>Thx in advance!</p>

<p>The problem with your code is that you are iterating over the spamreader twice. You can only do that once.</p>

<p>this statement will result in the correct answer.</p>

<pre><code>anzahl_zeilen = sum(1 for row in spamreader)
</code></pre>

<p>but when you now iterate over the same spamreader you'll get empty list, since you have already iterated over the file once</p>

<pre><code>for row in spamreader:
    if spamreader.line_num &gt; 9 and spamreader.line_num &lt; anzahl_zeilen:
        verbrauch_ab_reset = row[7]

        verbraeuche_ab_reset.append(verbrauch_ab_reset)
</code></pre>

<p>to solve this use,</p>

<pre><code>spamreader = csv.reader(open('test.csv'), delimiter = ';')
    anzahl_zeilen = sum(1 for row in spamreader)
    spamreader = csv.reader(open('test.csv'), delimiter = ';')
        for row in spamreader:
            if spamreader.line_num &gt; 9 and spamreader.line_num &lt; anzahl_zeilen:
                verbrauch_ab_reset = row[7]

                verbraeuche_ab_reset.append(verbrauch_ab_reset)
</code></pre>

python python-3.x csv