我如何读取一个文件,追加它的内容?
How do I read a file, append it's contents?
总的来说,我是编程新手,特别是使用 Python。我正在尝试编写一个函数,它将一个文件作为参数,附加内容(同时将类型转换为浮点数)和 returns 平均值。该文件名为 "stuff.txt",很小,包含:
3
2
1
4.0
5.0
这是我目前拥有的:
def my_average(file):
numbers = []
with open(file) as f:
for line in f:
numbers.append(float(f.readline()))
return sum(numbers)/len(numbers)
my_average('stuff.txt')
它一直试图将字符串 'stuff.txt' 转换为浮点数并抛出错误。有帮助吗?
文件中是否确实包含字符串 stuff.txt
?如所写,代码中唯一的错误是您丢弃了偶数行(在 for
循环中隐式读入 line
的行),仅存储奇数行(来自 readline
电话)。
您可以通过将循环更改为:
来解决此问题
def my_average(file):
numbers = []
with open(file) as f:
for line in f:
numbers.append(float(line)) # Convert the line you've got, not a new one from readline
return sum(numbers)/len(numbers)
如果某些行可能是无效的浮点数,例如因为文件以 stuff.txt
开头,您可以通过捕获异常并忽略它们来静默忽略这些行:
def my_average(file):
numbers = []
with open(file) as f:
for line in f:
try:
numbers.append(float(line))
except ValueError:
pass
return sum(numbers)/len(numbers)
总的来说,我是编程新手,特别是使用 Python。我正在尝试编写一个函数,它将一个文件作为参数,附加内容(同时将类型转换为浮点数)和 returns 平均值。该文件名为 "stuff.txt",很小,包含:
3
2
1
4.0
5.0
这是我目前拥有的:
def my_average(file):
numbers = []
with open(file) as f:
for line in f:
numbers.append(float(f.readline()))
return sum(numbers)/len(numbers)
my_average('stuff.txt')
它一直试图将字符串 'stuff.txt' 转换为浮点数并抛出错误。有帮助吗?
文件中是否确实包含字符串 stuff.txt
?如所写,代码中唯一的错误是您丢弃了偶数行(在 for
循环中隐式读入 line
的行),仅存储奇数行(来自 readline
电话)。
您可以通过将循环更改为:
来解决此问题def my_average(file):
numbers = []
with open(file) as f:
for line in f:
numbers.append(float(line)) # Convert the line you've got, not a new one from readline
return sum(numbers)/len(numbers)
如果某些行可能是无效的浮点数,例如因为文件以 stuff.txt
开头,您可以通过捕获异常并忽略它们来静默忽略这些行:
def my_average(file):
numbers = []
with open(file) as f:
for line in f:
try:
numbers.append(float(line))
except ValueError:
pass
return sum(numbers)/len(numbers)