Python通过函数调用读取输入行

时间:2016-10-10 10:47:51

标签: python file text input

我的下面的代码非常适合接收我的输入数据(list.txt)并将2到5之间的行返回到屏幕。

def get_list():

    file = open('list.txt', 'r')
    lines = file.read().splitlines()[2:5]
    print (lines)

get_list()

但是我需要实现一些可以调用函数的东西:

get_list()[2:5] 

这将在第2行和第5行之间打印。任何人都可以提出一种可行的方法吗?谢谢!

3 个答案:

答案 0 :(得分:1)

def get_list():

   with open('list.txt', 'r') as file:
       lines = file.read().splitlines()
   return lines

print(get_list()[2:5])

答案 1 :(得分:1)

正如我在问题评论中提到的那样,是一件明智的事情,但这是如何做到的。为了测试这段代码,我使用GNU coreutils命令seq创建了一个包含整数0到9的文本文件:

seq 0 9 >list.txt

这是Python代码:

class AutoPrint(object):
    def __init__(self, data):
        self.data = data

    def __getitem__(self, idx):
        for row in self.data[idx]:
            print(row)

def get_list(fname):
    with open('list.txt') as f:
        data = f.read().splitlines()
    return AutoPrint(data)

get_list('list.txt')[2:5]

<强>输出

2
3
4

不要在真实的代码中做这样的疯狂的事情!我的__getitem__方法返回None;一个合适的__getitem__应该返回所选的项目。并且它不应该有疯狂的副作用,比如打印东西。 OTOH,我猜你正在开发代码时它可以方便它打印(或记录)东西,以便你知道它正在做你期望它做的事情。

答案 2 :(得分:0)

只需返回行!

def get_list():

    file = open('list.txt', 'r')
    lines = file.read().splitlines()
    return lines