从函数中的TypeError开始

发布于 2021-01-29 17:48:21

这是代码:

    def readFasta(filename):
        """ Reads a sequence in Fasta format """
        fp = open(filename, 'rb')
        header = ""
        seq = ""
        while True:
            line = fp.readline()
            if (line == ""):
                break
            if (line.startswith('>')):
                header = line[1:].strip()
            else:
                seq = fp.read().replace('\n','')
                seq = seq.replace('\r','')          # for windows
                break
        fp.close()
        return (header, seq)

    FASTAsequence = readFasta("MusChr01.fa")

我得到的错误是:

TypeError: startswith first arg must be bytes or a tuple of bytes, not str

但是startswith根据文档,第一个参数应该是字符串…那么怎么回事?

我假设至少使用Python 3,因为我使用的是最新版本的LiClipse。

关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这是因为您是以字节模式打开文件的,所以您调用bytes.startswith()而不是str.startswith()

    你需要做的line.startswith(b'>'),这将使'>'一个字节的文字



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看