Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从文件读取并给出最小值、最大值和平均值的程序_Python - Fatal编程技术网

Python 从文件读取并给出最小值、最大值和平均值的程序

Python 从文件读取并给出最小值、最大值和平均值的程序,python,Python,我正在写一个程序,它有一个函数可以写入文件。然后,另一个函数从文件中读取打印值,然后打印最小值、最大值和平均值。当我试图读取文件时,我得到以下错误 Traceback (most recent call last): File

我正在写一个程序,它有一个函数可以写入文件。然后,另一个函数从文件中读取打印值,然后打印最小值、最大值和平均值。当我试图读取文件时,我得到以下错误

Traceback (most recent call last):                                                                                                                                       
  File "A8.py", line 39, in <module>                                                                                                                                     
    main()                                                                                                                                                               
  File "A8.py", line 35, in main                                                                                                                                         
    read_output('file_name.txt')                                                                                                                                         
  File "A8.py", line 19, in read_output                                                                                                                                  
    biggest = min(data)                                                                                                                                                  
ValueError: min() arg is an empty sequence

尝试读取和处理以下数据:

with open("test.txt") as f:
    content = f.readlines()

data = [float(line.strip()) for line in content]
这一行代码也应该起作用:

data = [float(line.strip()) for line in open("test.txt")]

编辑:对于阅读行的有效方法的一些参考,我建议检查尝试阅读和处理如下数据:

with open("test.txt") as f:
    content = f.readlines()

data = [float(line.strip()) for line in content]
这一行代码也应该起作用:

data = [float(line.strip()) for line in open("test.txt")]

编辑:对于阅读行的有效方法的一些参考,我建议检查您已经在文件上迭代了两次,所以列表数据是空的

def read_output(file_name):
    f = open('file_name.txt')
    data = [float(line.rstrip()) for line in f]
    biggest = min(data)
    smallest = max(data)
    print("Biggest: {}".format(biggest))
    print("Smallest: {}".format(smallest))
    print("Average: {}".format(sum(data)/len(data)))
在python中读取和写入文件的最佳方式:

with open('file_name.txt', 'r') as my_file:
    for line in my_file:
        print line


with open('file_name.txt', 'w') as my_file:
    my_file.write('ciao')
write_输出中也有一个错误,当按下enter键时,您不能写入换行,因为在读取文件引发错误时会解析换行:

def write_input(file_name):
    try:
        inputfile = open('file_name.txt','w')
        while True:
            inp = raw_input("Please enter a number. Press Enter to exit")
            if inp == "":
                break
            inputfile.write(str(inp) + '\n')
    except Exception as err:
        print(err)

您已经对文件进行了两次迭代,因此列表数据为空

def read_output(file_name):
    f = open('file_name.txt')
    data = [float(line.rstrip()) for line in f]
    biggest = min(data)
    smallest = max(data)
    print("Biggest: {}".format(biggest))
    print("Smallest: {}".format(smallest))
    print("Average: {}".format(sum(data)/len(data)))
在python中读取和写入文件的最佳方式:

with open('file_name.txt', 'r') as my_file:
    for line in my_file:
        print line


with open('file_name.txt', 'w') as my_file:
    my_file.write('ciao')
write_输出中也有一个错误,当按下enter键时,您不能写入换行,因为在读取文件引发错误时会解析换行:

def write_input(file_name):
    try:
        inputfile = open('file_name.txt','w')
        while True:
            inp = raw_input("Please enter a number. Press Enter to exit")
            if inp == "":
                break
            inputfile.write(str(inp) + '\n')
    except Exception as err:
        print(err)

首先,要编写您的文件:

from random import randint
with open('/tmp/file', 'w') as f_out:
    for n in range(100000):
        f_out.write('{}\n'.format(randint(0,1000000)))
然后逐行读取该文件并计算最小值、最大值和平均值:

import sys 
m_max=-sys.maxint
m_min=sys.maxint
m_sum=0      
with open('/tmp/file') as f_in:
    for cnt, line in enumerate(f_in, 1):
        n=int(line)
        m_max=n if n>m_max else m_max
        m_min=n if n<m_min else m_min
        m_sum+=n

print 'max: {}\nmin: {}\navg: {}\ncnt: {}'.format(m_max, m_min, m_sum/cnt, cnt) 
如果文件足够小,可以通过将整个文件读入内存并使用Python内置程序来实现:

with open('/tmp/file') as f_in:
    nums=[int(line) for line in f_in]
    print 'max: {}\nmin: {}\navg: {}\ncnt: {}'.format(max(nums), min(nums), 
                       float(sum(nums))/len(nums), len(nums))

首先,要编写您的文件:

from random import randint
with open('/tmp/file', 'w') as f_out:
    for n in range(100000):
        f_out.write('{}\n'.format(randint(0,1000000)))
然后逐行读取该文件并计算最小值、最大值和平均值:

import sys 
m_max=-sys.maxint
m_min=sys.maxint
m_sum=0      
with open('/tmp/file') as f_in:
    for cnt, line in enumerate(f_in, 1):
        n=int(line)
        m_max=n if n>m_max else m_max
        m_min=n if n<m_min else m_min
        m_sum+=n

print 'max: {}\nmin: {}\navg: {}\ncnt: {}'.format(m_max, m_min, m_sum/cnt, cnt) 
如果文件足够小,可以通过将整个文件读入内存并使用Python内置程序来实现:

with open('/tmp/file') as f_in:
    nums=[int(line) for line in f_in]
    print 'max: {}\nmin: {}\navg: {}\ncnt: {}'.format(max(nums), min(nums), 
                       float(sum(nums))/len(nums), len(nums))

欢迎来到SO。这一行中的
数据是什么:
最大值=最小值(数据)
数据是一个列表,它保存文件中的值,以便我可以计算平均最小值和最大值。欢迎使用so。这一行中的
data
是什么:
max=min(data)
data
是一个保存文件中的值的列表,以便我可以计算平均最小值和最大值。