我的下面的代码非常适合接收我的输入数据(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行之间打印。任何人都可以提出一种可行的方法吗?谢谢!
答案 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