Pickle over + str()函数

时间:2012-11-04 19:23:10

标签: python pickle

Pickle模块和+str()功能有什么区别?我刚刚写完了下面的代码

def orf(codons):
seqlist = []
flag = False
start = ['ATG']
    stop= ['TAA','TGA','TAG']
    for i in codons:
    if i in start:
        flag = True
            if flag == True:
        seqlist.append(i)
    if i in stop:
        flag = False
return seqlist

frame1 = string
codons = [frame1[i:i+3] for i in range (0, len(frame1),3)]
one = orf(codons)
seq1 =''.join(one)
output1 = 'Length of 1st open reading frame is:'+str(seq1)
#seq1 =''.join(one)
seq_list.append(seq1)
length1 = len(seq1)
output_1 = '\nSize of 1st open reading frame is:'+str(len(seq1))
length_list.append(length1)
out.write(output1)
out.write(output_1)

我使用+str()函数以字符串的形式获取函数(orf (codons))。这是否可以使用Pickle。我确实阅读过python教程,但却无法理解它的意思。如果你可以解决我的代码,我会很棒。

2 个答案:

答案 0 :(得分:2)

没有+str功能。

您显示的代码段包含表达式'Length of 1st open reading frame is:'+str(seq1),该表达式由字符串,+运算符和对类str的调用组成。

Pickle是一个允许(大多数)python对象被序列化为文件(或流)的模块。

答案 1 :(得分:0)

str函数与pickle模块完全不同。

str将任何Python对象转换为字符串,通常是以人类可读或“友好”的方式(还有repr函数,这样做不那么友好,更专注于机器-可读性)。因此str([1,2,3])会返回字符串'[1, 2, 3]'。自定义类可以通过覆盖特殊的str方法来控制__str__将其转换为字符串的方式。

另一方面,

pickle是为Python对象的序列化而设计的。这也可能涉及将对象转换为字符串,但它完全专注于机器可读性,而不是人工解释。事实上,您从多种形式的酸洗(有几种不同的协议)中获得的字符串包含无法直接查看为文本的二进制值。 (pickle也有自定义类可以绑定的各种钩子,但它们比__str__复杂一点。)

根据您的情况,pickle似乎不是您想要的。使用str可以将整数,列表和其他对象转换为字符串进行打印。字符串(包括使用引号创建的文字字符串和从str获得的字符串)可以使用+运算符连接(尽管您可能需要考虑使用string formatting)。请注意,如果您已使用str.join方法将列表转换为字符串,则无需再次对结果运行str(正如您在代码中对seq1所做的那样在你的问题中)。