python-3.x - 使用 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
解决方案
这条线
seq = seq + line
很明显,您的代码line
中有一个列表,因为您在前一行中对其进行了索引。但是seq
是一个字符串。Python 抱怨该+
运算符不能用于将列表添加到字符串中。
我不确定你想要完成什么,所以我不能真正建议修复。如果您尝试将行添加到seq
,那么您需要选择line
要将其添加到的元素(例如seq + line[0]
)。例如,如果您想添加seq
(比如说) 的最后一个元素line
,那么您可以使用line.append(seq)
。
推荐阅读
- python - 处理多个 xml 文件并将所有输出保存在单个 .txt 文件中
- python - /login/ 'bool' 对象的 TypeError 不可调用
- c# - 如何使用一对一/零关系更新员工和身份用户
- lambda - 在 Termux 上使用 ecj 编译失败 lambda 表达式
- c++ - 错误:开关量不是整数开关((MPI_Datatype)数据类型){
- java - JFXTextField 值未正确传递
- javascript - 如何为这个 javascript 函数设置动画?
- url - 如何通过用户脚本(切换维基百科语言/脚本)从多个可能的子路径重定向?
- html - 如何迭代 JSON 数据并将结果插入相应的 HTML 表格行?
- wordpress - 使用 Razorpay 时如何跟踪产品付款?