Skip to main content
 首页 » 编程设计

python之为什么当我先打开要写入的文件时,无法使用 Python 中的 File.open 读取任何内容

2025年05月04日11mayingbao

f = open('day_temps.txt','w') 
f.write("10.3,10.1,9.9,9.9,9.8,9.6,9.0,10.1,10.2,11.1") 
f.close 
 
def get_stats(file_name): 
    temp_file = open(file_name,'r') 
    temp_array = temp_file.read().split(',') 
    number_array = [] 
    for value in temp_array: 
        number_array.append(float(value)) 
    number_array.sort() 
    max_value = number_array[-1] 
    min_value = number_array[0] 
    sum_value = 0 
    for value in number_array: 
        sum_value += value 
    avg_value = sum_value / len(number_array) 
    return min_value, max_value, avg_value 
 
mini, maxi, mean = get_stats('day_temps.txt') 
print "({0:.5}, {1:.5}, {2:.5})".format(mini, maxi, mean) 

如果没有 前 3 行,代码可以工作,有了它我无法读取 temp_file 中的任何内容,我不明白,知道吗?

请您参考如下方法:

您从未使用这行代码关闭文件:

f.close 

要么使用 f.close(),要么使用 with 语法,它会自动关闭文件句柄并防止出现如下问题:

with open('day_temps.txt', 'w') as handle: 
    handle.write("10.3,10.1,9.9,9.9,9.8,9.6,9.0,10.1,10.2,11.1") 

此外,您还可以显着压缩代码:

with open('day_temps.txt', 'w') as handle: 
    handle.write("10.3,10.1,9.9,9.9,9.8,9.6,9.0,10.1,10.2,11.1") 
 
def get_stats(file_name): 
    with open(file_name, 'r') as handle: 
        numbers = map(float, handle.read().split(',')) 
 
    return min(numbers), max(numbers), sum(numbers) / len(numbers) 
 
if __name__ == '__main__': 
    stats = get_stats('day_temps.txt') 
    print "({0:.5}, {1:.5}, {2:.5})".format(*stats)