首页 > 解决方案 > 使用 python3 将字符串从一个文件提取到另一个文件会导致 TypeError: expected str, bytes or os.PathLike object, not list

问题描述

我试图编译的代码在 Python shell 中产生了一个 TypeError,但是,当我将 out_file PATH 更改为具体字符串时,它可以按需要工作。有人可以帮我弄清楚是什么导致了这个错误吗?

.fasta 文件是一系列带有特殊标题行的氨基序列,如下所示:

 >sp|Q6GZX4|001R_FRG3G Putative transcription factor 001R OS=Frog virus 3 (isolate Goorha) OX=654924 GN=FV3-001R PE=4 SV=1
MAFSAEDVLKEYDRRRRMEALLLSLYYPNDRKLLDYKEWSPPRVQVECPKAPVEWNNPPS
EKGLIVGHFSGIKYKGEKAQASEVDVNKMCCWVSKFKDAMRRYQGIQTCKIPGKVLSDLD
AKIKAYNLTVEGVEGFVRYSRVTKQHVAAFLKELRHSKQYENVNLIHYILTDKRVDIQHL
EKDLVKDFKALVESAHRMRQGHMINVKYILYQLLKKHGHGPDGPDILTVKTGSKGVLYDD
SFRKIYTDLGWKFTPL

下面是我的代码:

fasta_file = open('/Users/apple/Desktop/123.fasta','r')

seq = ''
for line in fasta_file:
    if line[0] == '>' and seq == '':
        head = line
        AC = line.split('|')
    elif line[0] != '>' and seq == '':
        seq = seq + line 
    elif line[0] == '>' and seq != '':
        out_file = open(AC,'w')
        out_file.write(head + line)
        out_file.close()
        seq=''
        head=line
Traceback (most recent call last):
  File "<stdin>", line 8, in <module>
TypeError: expected str, bytes or os.PathLike object, not list

标签: python-3.x

解决方案


这条线

seq = seq + line 

很明显,您的代码line中有一个列表,因为您在前一行中对其进行了索引。但是seq是一个字符串。Python 抱怨该+运算符不能用于将列表添加到字符串中。

我不确定你想要完成什么,所以我不能真正建议修复。如果您尝试将行添加到seq,那么您需要选择line要将其添加到的元素(例如seq + line[0])。例如,如果您想添加seq(比如说) 的最后一个元素line,那么您可以使用line.append(seq)


推荐阅读