【发布时间】:2019-10-23 21:11:35
【问题描述】:
我有一个读取 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 的输出,这是我使用该函数的第一个文件。如何在不获取相同值的情况下重用这个函数?
【问题讨论】:
-
你的函数没有返回任何东西,那么
lines应该是什么? -
@OferSadan 道歉,现在无关紧要,因为我已经理解了我的问题。
-
您需要在调用函数之前使用
lines = []或在函数开头使用lines[:] = []语句清除函数正在使用的lines列表的内容。跨度> -
您不喜欢使用专用的 VCF 库,例如
PyVCF?
标签: python list function vcf-variant-call-format