首页 > 解决方案 > Python:使用“readline()”函数读取行并附加到列表

问题描述

我的代码:

在我的文件中,我在列表中有这些数字

charge_account = ['4654145', '9658115', '5658845', '5658045', '6181531', '2134874', '5964554']

我正在使用函数读取文件,将其附加到列表中,然后返回列表:

import os
os.system('cls')

def fileReader():
    contentList = []
    with open('charge_accounts.txt','r') as f:
        line = f.readline().rstrip('\n')

     while line !="":
         line = f.readline().rstrip(' \n')
         contentList.append(line)
     # print(contentList)
     # print(len(contentList))
     #contentList = contentList[:-1]
     print(contentList)
          
return contentList

现在我的问题是,当我读取所有文件内容并将它们附加到我的列表中时,我在列表末尾得到一个额外的空白字符串。输出:['4654145','9658115','5658845','5658045','6181531','2134874','5964554','']

现在我已经通过使用切片解决了它(正如我注释掉的那样),但我仍然没有弄清楚为什么我在列表末尾得到了 ' '。我尝试将其过滤掉,但注意到发生了。我检查了文件末尾是否有多余的行,但我做错了什么?

标签: python-3.xlistfunctionappendreadline

解决方案


有几件事。您正在 while 循环中逐行读取文件。这意味着在读取最后一行之后,while 条件仍然为真,因此您读取了一个额外的行(它是空的)但仍添加到您的列表中。

但是您不需要 while 循环:使用lines = f.readlines(). 它将读取列表中的整个文件,并且您几乎拥有您想要的列表。几乎,因为您需要剥离每个元素:

def fileReader():
    with open('charge_accounts.txt','r') as f:
        lines = f.readlines()
    return [line.strip() for line in lines]

print(fileReader())

推荐阅读