擅长:python、mysql、java
<p>您已经用<code>line = file.read()</code>使用了文件迭代器,因此您没有迭代任何内容。您应该忘记<code>read</code>,然后迭代file对象本身:</p>
<pre><code>with open("inputs.txt", "r") as f:
count = sum(line.count(",") for line in f)
# f.seek(0)
# use the lines again
</code></pre>
<p>{cd3>如果你不想让这个指针回到原点。在</p>
<p>一旦您调用.read或.readlines,您就将指针移到文件的末尾,因此除非您<code>f.seek(0)</code>您无法再次遍历所有行,否则您基本上是在执行以下操作:</p>
^{pr2}$
<p>如果您有一个逗号分隔的整数文件,您可以使用csv模块,行的长度将为您提供如何可能元素的计数,并将字符串映射到整数,并对所有行值求和:</p>
<pre><code>import csv
with open("inputs.txt") as f:
r = csv.reader(f) # create rows split on commas
sm = 0
com_count = 0
for row in r:
com_count += len(row) # "1,2,3"
sm += sum(map(int,row))
</code></pre>
<p>实际上应该是<code>sm += sum(map(int,row)) -1</code>来匹配逗号计数,但是如果您想要元素的数量,那么计算逗号不是正确的方法<code>"1,2,3".count(",") == 2</code>,但是有三个元素。在</p>