编写一个反向返回data.txt的函数

时间:2015-04-11 01:32:27

标签: python python-3.x

我是Python编程的新手,我一直坚持如何反向返回函数中的数据。

例如,如果data.txt包含:

Chaos reigns within. 
Reflect, repent, and reboot 
Order will return.

对write_reversed('data.txt')的调用将打印:

Order will return.
Reflect, repent, and reboot
Chaos reigns within.

我目前编写的代码是

def write_reversed(filename):
    """returns with words in reverse order in the file"""
    with open(filename, 'r') as write_reversed:
        for line in write_reversed:
            return filename[::-1]

我已将代码粘贴到Pylint检查器中,并显示“未使用的变量'行'”

5 个答案:

答案 0 :(得分:1)

您收到unused variable错误,因为(显然)您在声明后未使用该变量。也许你的意思是:

for line in write_reversed:
     return line[::-1]

但是,您可以执行以下操作

def write_reversed(filename):
    """returns with words in reverse order in the file"""
    content = []
    with open(filename, 'r') as write_reversed:
        for line in write_reversed:
            content.append(line)
    return list(reversed(content))

答案 1 :(得分:0)

首先,它说"未使用的变量line"因为你从不使用line。你应该使用它而不是filename - 因为它是你打开一个文件,然后对于文件中的每一行你向后返回文件名(只发生一次,因为return将结束功能)。

相反,建立一个list,然后return反转列表。

def write_reversed(filename):
    """returns with words in reverse order in the file"""
    reversed = []
    with open(filename, 'r') as write_reversed:
        for line in write_reversed:
            reversed.append(line)
    return reversed[::-1]

答案 2 :(得分:0)

您可以打开该文件。 readlines 将返回文件中的行。

for l in F.readlines()[::-1]:
     print l.strip()

将完成这项工作

如果您想要返回内容,只需写下:

return "\n".join([l.strip() for l in F.readlines()[::-1]])

答案 3 :(得分:0)

您正在撤消文件名而不是文件行。有一个reversed函数可以返回迭代器而不是你反向传递的函数。文件对象是可迭代的(这就是为什么你可以使用for循环它们的行),所以你可以直接将它们传递给reversed

def reversed_lines(filename):
    """returns with words in reverse order in the file"""
    with open(filename, 'r') as f:
        return list(reversed(f))

如果该功能应该打印行而不是返回行,请使用forreversed(f)代替f

答案 4 :(得分:0)

我不知道你的问题是什么,但这是一个双线:

with open(filename, 'r') as f:
    print(*reversed(f.readlines()), sep='')

您也可以简单地将反转的行作为迭代器或列表返回:

with open(filename, 'r') as f:
    return reversed(f.readlines()) # optional: wrap expr. in list()

然后打印所需的输出就像:

reversed_lines = write_reversed(filename)
print(*reversed_lines, sep='')

注意:write_reversed对于一个实际上没有向缓冲区写入任何内容的函数来说是一个错误的函数名。