python-3.x - 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','']
现在我已经通过使用切片解决了它(正如我注释掉的那样),但我仍然没有弄清楚为什么我在列表末尾得到了 ' '。我尝试将其过滤掉,但注意到发生了。我检查了文件末尾是否有多余的行,但我做错了什么?
解决方案
有几件事。您正在 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())
推荐阅读
- c++ - 注意: 'Entity_c::Entity_c(const Entity_c&)' 被隐式删除,因为默认定义格式不正确:
- docker - Docker:COPY 在运行 `docker build` 的本地目录中找不到文件
- r - 加快R中foreach循环中的模型拟合
- c# - 在 swagger (.NET) 中添加自定义 xml 标签
- java - 如何在 RestApi 调用中设置多个响应类型
- amazon-sqs - 在@SQSListener + Amazon SQS 中成功处理消息时触发 Cloudwatch 警报 +
- shell - 用于读取 CSV 中的两列并计算第 2 列中每个唯一值在第 1 列中有多少个 uniq 值的 Shell 脚本
- css - 如何更改在typo3 8.7 中创建的表单的字体?
- reactjs - 无法使用 fetch 设置自定义标头值
- reactjs - 如何从父/另一个组件调用方法