1

我在我的程序中合并的文件充满了数字列表。我必须将该文件转换为整数以显示平均值。

import os.path

def main():
    try:
        filename = input("name of the file: ")
        print(os.path.abspath(filename))
    except IOError:
        print("File not found")
    except ValueError:
        print("Cannot convert into an integer")

main()
4

3 回答 3

0

这应该有效:

nums = []
with open('nums.txt', 'r') as f:
    for line in f:
        nums.extend([int(x) for x in line.split()])
print sum(nums)/len(nums)

支持每行有多个数字的nums.extend文件(这就是它有点复杂的原因)。

于 2013-06-07T01:08:49.473 回答
0
def compute_average(path):
    with open(path) as fp:
        values = map(int, fp.read().split())
    return sum(values) / len(values)
于 2013-06-07T01:15:33.543 回答
0

一些想法:

open将为您提供一个可迭代的文件对象。当您遍历文件时,它将依次产生每一行。是一个构造函数和一个类型——你可以给它传递一个字符串,如果字符串可以被转换成一个.intint

最后,你可能想看看内置函数sum,它可以接受一个可迭代的数字并返回这些数字的总和。

一个示例实现:

from os.path import abspath

def get_file_sums():
    name = input("Please provide a file name:")
    with open(abspath(name), "r", encoding="utf-8") as fo:
        result = sum(int(line, base=10) for line in fo)
        print("The result is:", result)

if __name__ == "__main__":
    get_file_sums()
于 2013-06-07T00:59:50.183 回答