函数的所有输出均相同

时间:2019-10-23 21:11:35

标签: python list function

我具有读取VCF文件的功能

def readVCF(VCF):
    VCF = VCF.readlines()
    header = [] 
    data = []
    for line in VCF:
        if line.startswith('#'):
            header.append(line) 
        else:
            data.append(line)
    VCF_contents =[]  
    for line in data:
        VCF_contents.extend(line.strip().split('\t'))
    for i in range(0, len(VCF_contents), 10): 
        lines.append(VCF_contents[i : i+10]) 

该功能可以按我希望的方式工作,但是当我多次使用它时,问题就开始了。

我想在不同文件上多次使用此功能,并同时使用所有这些不同文件的输出。我一直在使用这样的功能:

VCF = open("frogs.txt", 'r')
lines = []
readVCF(VCF)
frogs = lines
VCF.close

VCF = open("rabbits.txt.", 'r')
readVCF(VCF)
rabbits = lines
VCF.close

VCF = open("lizards.txt", 'r')
readVCF(VCF)
lizards = lines
VCF.close

问题在于,我所有的输出都相同,并且所有输出都来自frogs.txt,这是我使用该函数的第一个文件。如何在不获取相同值的情况下重用此功能?

1 个答案:

答案 0 :(得分:1)

可能您要添加:

lines = []

在您的函数开头,然后:

return lines

在函数末尾,然后像这样调用它:

VCF = open("frogs.txt", 'r')
frogs = readVCF(VCF)
VCF.close()

或(可能更好):

with open("frogs.txt", 'r') as VCF:
    frogs = readVCF(VCF)