2

さて、私は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")

これは私の出力に書き込むべきものです。「共有」は私が計算したもので、残りはすでにファイルに含まれています。

さて、私の質問です。最後に、スクリプトを次のように呼び出すと
、シェルで 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

データに関してそれが何を意味するのかわかりません...何かアイデアはありますか?

4

1 に答える 1

4

line.split('\t', 10)呼び出しは 11 個の要素を返しませんでした。おそらくそれは空ですか?

これらのファイルを解析するために、代わりにcsvモジュールを使用することをお勧めします。

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])
于 2013-03-22T11:42:06.173 に答える