-1

我想创建一个新功能

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)

我该怎么做?当我这样做时,由于某种原因没有定义线条。

4

2 回答 2

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
于 2012-12-03T06:48:24.677 回答
0

您的函数失败,因为您没有lines在其中定义任何地方。但是您的代码的主要问题是您尝试使用while循环读取文件,这是在python中读取文件的最糟糕的方式,至少如果您对这些行所做的只是将它们存储在一个列表中。

文件对象已经有一个函数返回它的行列表,适当地命名为readlines. 更好的是,文件对象是其所有行的迭代器;这意味着要获得删除换行符的行列表,您所要做的就是这个简单的表达式:

with open(filename) as f:
    lines = [line.rstrip("\n") for line in f]
于 2012-12-04T19:59:01.317 回答