2 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
我希望它可以幫助你 with open (sys.argv[2]) as file_:
for line in file_:

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
只有在運(yùn)行程序時(shí)沒有將預(yù)期數(shù)量的參數(shù)傳遞給程序時(shí),才會(huì)發(fā)生您描述的異常。該sys.argv變量包含程序的參數(shù)。它將是一個(gè)列表,并且sys.argv[0]將具有腳本本身的文件名,而后面的值將是后面?zhèn)魅氲膮?shù)。
您的程序的文檔字符串 ( %prog file.fasta wanted_ids.txt) 表明您需要將兩個(gè)參數(shù)傳遞給程序,一個(gè)是.fasta文件,另一個(gè)是.txt文件。您忽略了其中一個(gè)或兩個(gè)參數(shù),因此程序無法執(zhí)行查找sys.argv[2], 并引發(fā)IndexError.
你可能想在你的程序中添加代碼來檢查參數(shù)的數(shù)量,并在你得到錯(cuò)誤的數(shù)字時(shí)給出一個(gè)更有幫助的異常:
from Bio import SeqIO
import sys
if len(sys.argv) != 3:
sys.exit("Bad arguments! Usage: {} <file.fasta> <wanted_ids.txt>".format(sys.argv[0]))
wanted = [line.strip() for line in open(sys.argv[2])]
#...
添加回答
舉報(bào)