我想创建一个新功能
def new_func(abc):
with open(APPROVAL_BALLOT_FILENAME) as f:
while True:
line = f.readline()
if line:
lines.append(line)
else:
break
并做 new_func(feklfe)
我该怎么做? 当我这样做时,线条由于某种原因没有被定义。
答案 0 :(得分:0)
您必须在函数内正确定义lines
:
def new_func(abc):
lines = []
with open(APPROVAL_BALLOT_FILENAME) as f:
while True:
line = f.readline()
if line:
lines.append(line)
else:
break
return lines
你可能还想要的是使用文件名作为你的功能的参数。像这样:
def new_func(filename):
lines = []
with open(filename) as f:
while True:
line = f.readline()
if line:
lines.append(line)
else:
break
return lines
答案 1 :(得分:0)
您的功能失败,因为您没有在其中的任何位置定义lines
。但是你的代码的主要问题是你试图用while循环读取一个文件,这是在python中读取文件的最糟糕的方式,至少如果你对这些行所做的只是将它们存储在列表中。
文件对象已经有一个函数返回其行的列表,名称为readlines
。更好的是,文件对象是所有行的迭代器;这意味着你需要做的就是删除换行符的行列表就是这个简单的表达式:
with open(filename) as f:
lines = [line.rstrip("\n") for line in f]