我有一个简单的程序,它可以查看文件,查找其中的任何数字,并将它们加到一个名为running_total的变量中。我的问题似乎是我的文件名是正在读取的东西,而不是其内容。
import re
file = input('Enter file name:')
open(file)
print(file)
running_total = None
for line in file:
line = line.rstrip()
numbers = re.findall("[0-9]+", line)
print(numbers)
for number in numbers:
running_total += float(number)
print(running_total)
我想念什么?
file
是一个字符串,表示从input
函数中出来的文件名,它仍然是一个字符串。因此,当您遍历该文件时,将一一获得文件名的字母。当您调用时open(file)
,返回一个可以迭代以提供文件内容的对象,但是您当前没有为该对象命名或重新使用它。您的意思确实是这样的:
file_name = input('Enter file name:')
file_handle = open(file_name) # this doesn't change file_name, but it does output something new (let's call that file_handle)
for line in file_handle:
....
file_handle.close()
...虽然更惯用的Python方式是使用一条with
语句:
file_name = input('Enter file name:')
with open(file_name) as file_handle:
for line in file_handle:
....
# and then you don't have to worry about closing the file at the end (or about whether it has been left open if an exception occurs)
请注意,变量file_handle
是一个其类被调用的对象file
(这是我在此处更改变量名称的原因之一)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句