将文件中的数据添加到lis时出现问题

2024-04-25 10:15:28 发布

您现在位置:Python中文网/ 问答频道 /正文

问题

我使用以下代码读取文件并对其进行操作。我为每个函数重用代码的第一位,将数据添加到两个文件中。但是,最后一个函数不会将数据添加到我的列表中,即使它是完全相同的代码?它甚至不打印文件的行?你知道吗

data_laag = open('/Users/arkin/programming/TN_STAID000162.txt')
data_hoog = open('/Users/arkin/programming/TX_STAID000162.txt')

def temp_laag(data):

    temp = []
    date = []
    line_num = 0

    for line in data_laag:
        if line_num < 22:
            line_num += 1
        else:
            data = line.split(',')
            temp.append(float(data[3])/10)
            date.append(data[2])

    min_temp = 999
    for i in temp:
        if i < min_temp:
            min_temp = i

    index = temp.index(min_temp)
    print 'De minimum temperatuur ooit gemeten is:' ,min_temp, 'Dit was op de volgende datum',      date[index][:4],date[index][4:6],date[index][6:8]

temp_laag(data_laag)

def temp_hoog(data):   

    temp = []
    datum = []
    line_num = 0

    for line in data_hoog:
        if line_num < 22:
            line_num += 1
        else:
            data = line.split(',')
            temp.append(float(data[3])/10)
            datum.append(data[2])

    max_temp = 0
    for i in temp:
        if i > max_temp:
            max_temp = i

    index = temp.index(max_temp)
    print 'De maximum temperatuur gemeten is', max_temp , 'Dit gebeurd op op de volgende datum', datum[index][:4],datum[index][4:6],datum[index][6:8]

temp_hoog(data_hoog)

def aantal_dagen(data):

    temp = []
    date = []
    line_num = 0

    for line in data:
        print line
        if line_num < 22:
            line_num += 1
        else:
            data = line.split(',')
            temp.append(float(data[3])/10)
            date.append(data[2])

    print temp

aantal_dagen(data_laag)

Tags: infordatadateindexiflinemin
1条回答
网友
1楼 · 发布于 2024-04-25 10:15:28

有很多选择,最简单的就是改变这两行

data_laag = open('/Users/arkin/programming/TN_STAID000162.txt')
data_hoog = open('/Users/arkin/programming/TX_STAID000162.txt')

为了这个

with open('/Users/arkin/programming/TN_STAID000162.txt') as f:
    data_laag = list(f)
with open('/Users/arkin/programming/TX_STAID000162.txt') as f:
    data_hoog = list(f)

这会导致每个文件被打开,读入一个数组,然后关闭(您缺少的东西)。这意味着每个文件只读取一次,并且可以在原始代码中重用数据。你知道吗

但是你需要处理行尾等等

相关问题 更多 >