好的,所以我正在学习Python。但是对于我的学习,我必须做相当复杂的事情。我正在尝试运行脚本来分析excel文件中的数据。这是它的外观:
#!/usr/bin/python
import sys
#lots of functions, not relevant
resultsdir = /home/blah
filename1=sys.argv[1]
filename2=sys.argv[2]
out = open(sys.argv[3],"w")
#filename1,filename2="CNVB_reads.403476","CNVB_reads.403447"
file1=open(resultsdir+"/"+filename1+".csv")
file2=open(resultsdir+"/"+filename2+".csv")
for line in file1:
start.p,end.p,type,nexons,start,end,cnvlength,chromosome,id,BF,rest=line.split("\t",10)
CNVs1[chr].append([int(start),int(end),float(BF)])
for line in file2:
start.p,end.p,type,nexons,start,end,cnvlength,chromosome,id,BF,rest=line.split("\t",10)
CNVs2[chr].append([int(start),int(end),float(BF)])
这些是excel文件中数据列的标题,我想拆分它们,我甚至不确定在使用excel文件中的数据时是否有必要。
#more irrelevant stuff
out.write(filename1+","+filename2+","+str(chromosome)+","+str(type)+","+str(shared)+"\n")
这是它应该在我的输出中写的,“共享”是我计算的,其余的已经在文件中。
好的,现在我的问题,最后,当我这样调用脚本时:
我的shell中的python script.py CNVB_reads.403476 CNVB_reads.403447 script.csv
我收到以下错误消息:
start.p,end.p,type,nexons,start,end,cnvlength,chromosome,id,BF,rest=line.split("\t",10)
ValueError: need more than 1 value to unpack
我不知道数据的含义是什么......有什么想法吗?
答案 0 :(得分:4)
line.split('\t', 10)
调用未返回11个元素。也许它是空的?
您可能希望使用csv
module来解析这些文件。
import csv
import os
for filename, target in ((filename1, CNVs1), (filename2, CNVs2)):
with open(os.path.join(resultsdir, filename + ".csv"), 'rb') as csvfile:
reader = csv.reader(csvfile, delimiter='\t')
for row in reader:
start.p, end.p = row[:2]
BF = float(row[8])
target[chr].append([int(start), int(end), BF])