我写了以下对我来说没问题的代码,但是当我运行它时,出现错误:
#!/usr/bin/env python2.7
with open("helloworld.txt", "r") as fcontent:
lc = 0
for eachline in fcontent:
lc += 1
if fcontent.count(eachline) > 1:
print(lc,eachline)
我得到的错误:
Traceback (most recent call last):
File "./openfile.py", line 7, in <module>
if fcontent.count(eachline) > 1:
AttributeError: 'file' object has no attribute 'count'
我在做什么错?我觉得它很小,但我似乎无法弄清楚。我怀疑是因为我正在使用with open
。当我在没有with
的情况下扫描文件时,没有任何错误:
#!/usr/bin/env python2.7
from sys import exit
filec = open("hellowDup.txt", "r")
fcontent = filec.readlines()
lc = 0
for eachline in fcontent:
lc += 1
if fcontent.count(eachline) > 1:
print(lc,eachline)
exit(0)
答案 0 :(得分:2)
.count()
是list
对象的方法。
list.count(x)
返回x在列表中出现的次数。
(来源:https://docs.python.org/3/tutorial/datastructures.html#more-on-lists)
它不是file
对象的方法。所以你不能在那里使用它。在第二个示例中,您正在使用.readlines()
个对象的file
方法读取文件:
readlines(hint=-1)
从流中读取并返回
list
行。可以指定提示来控制读取的行数: 读取到目前为止所有行的总大小(以字节/字符为单位) 超出提示。(来源:https://docs.python.org/3/library/io.html#io.IOBase.readlines)
由于.readlines()
方法返回了list
,因此您可以在此处调用.count()
方法。
答案 1 :(得分:2)
您是否注意到第一个代码没有FirebaseFirestoreException
语句?
以下内容等同于第二个代码:
readlines()
答案 2 :(得分:1)
您也可以这样使用它:
#!/usr/bin/env python2.7
with open("hellowDup.txt", "r") as fcontent:
lc = 0
for i, l in enumerate(fcontent):
print(i,l)
i + 1