我正在尝试在我正在编写的脚本中使用相同的定义。我可以让def工作一次但不是第二次,任何帮助都会很棒。
def def_test(name):
COUNT = 0
Totals = {}
for line in file_1:
if COUNT == 0:
COUNT +=1
continue
else:
quantity = float(line[12])
persons_name = line[14].strip(" ")
if persons_name == name:
print(name)
if __name__ =="__main__":
def_test("Adam")
def_test("Bob")
如何在第二次通过时找到“Bob”?
答案 0 :(得分:4)
由于问题中没有足够的信息(当时我写这个......),我的猜测是你在代码的其他地方打开文件,file_1
是对该打开文件的引用。迭代它时,您正在读取文件的末尾。您需要重置file_1
以指回文件的开头。从概念上讲,最简单的方法是关闭它并重新打开它。
除非有明确的理由在代码的其他部分打开文件,否则迭代文件行的惯用方法是使用with
语句,该语句打开文件,运行代码,然后再次自动关闭它。
例如:
with open("the_file.txt", "r") as file_1:
for line in file_1:
...
打开文件是一件相对低效的事情,但对于像你这样的简单程序,开销可以忽略不计。如果您每秒打开此文件数百次或更多次,则只打开一次是有意义的。在这种情况下,您将使用名为seek
的命令将内部指针移回文件的开头。我建议您放心使用with
,并且只有在确定实际出现性能问题时才开始考虑打开文件并使用seek
。
答案 1 :(得分:2)
你可以试试这个:
def def_test(name):
COUNT = 0
Totals = {}
with open('file', 'r') as file_1: #open file each time you call function
for line in file_1:
if COUNT == 0:
COUNT +=1
continue
else:
quantity = float(line[12])
persons_name = line[14].strip(" ")
if persons_name == name:
print(name)