亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

運行此代碼時我做錯了什么?

運行此代碼時我做錯了什么?

手掌心 2022-01-18 13:33:10
首先,我絕不是編程專家,也不精通python,如果這是一個愚蠢的問題,請原諒我。我正在嘗試運行下面的代碼,以使用“ID”文件將 fasta 文件過濾到我想要的序列,但每次運行它時,都會出現錯誤。任何幫助是極大的贊賞!"""%prog file.fasta wanted_ids.txt"""from Bio import SeqIOimport syswanted = [line.strip() for line in open(sys.argv[2])]seqiter = SeqIO.parse(open(sys.argv[1]), 'fasta')SeqIO.write((seq for seq in seqiter if seq.id in wanted), sys.stdout, "fasta")這是我得到的錯誤:File "filter.py", line 7, in <module>    wanted = [line.strip() for line in open(sys.argv[2])]IndexError: list index out of range
查看完整描述

2 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

我希望它可以幫助你 with open (sys.argv[2]) as file_:    for line in file_:


查看完整回答
反對 回復 2022-01-18
?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

只有在運行程序時沒有將預期數量的參數傳遞給程序時,才會發生您描述的異常。該sys.argv變量包含程序的參數。它將是一個列表,并且sys.argv[0]將具有腳本本身的文件名,而后面的值將是后面傳入的參數。


您的程序的文檔字符串 ( %prog file.fasta wanted_ids.txt) 表明您需要將兩個參數傳遞給程序,一個是.fasta文件,另一個是.txt文件。您忽略了其中一個或兩個參數,因此程序無法執行查找sys.argv[2], 并引發IndexError.


你可能想在你的程序中添加代碼來檢查參數的數量,并在你得到錯誤的數字時給出一個更有幫助的異常:


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])]

#...


查看完整回答
反對 回復 2022-01-18
  • 2 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號