在分配唯一变量时,多线性读取的Pythonic方法最多的是什么?

时间:2013-04-06 07:28:45

标签: python

例如:

    def get_values(input_file):
       f = open(input_file)
       key = f.readline().strip()
       value = f.readline().strip()
       name = f.readline().strip()
       password = f.readline().strip()
       return key, value, name, password

其中输入文件只是一个包含4行信息的文本。

3 个答案:

答案 0 :(得分:3)

您可以这样做:

key, value, name, password = (line.strip() for line in f)

此外,在您的代码中,在提取信息后,您似乎关闭文件。这可能会导致一些问题。您可以使用f.close(),也可以使用通常被认为更“pythonic”的with语句。

def get_values(input_file):
    with open(input_file) as f:
        key, value, name, password = (line.strip() for line in f)
    return key, value, name, password

为了进一步简化您的功能,我们实际上并不需要将值绑定到各个名称,因为我们在函数中不对它们执行任何操作。我们可以简单地使用一个列表。

def get_values(input_file):
    with open(input_file) as f:
        info = [line.strip() for line in f]
    return info

答案 1 :(得分:3)

import itertools

with open('data.txt') as f:
    key, value, name, password = (line.strip() for line in itertools.islice(f, 4))

答案 2 :(得分:0)

with open(input_file) as in_f:
    key, value, name, password = [line.strip() for idx, line in enumerate(in_f) if idx <= 3]