2011-06-12 54 views
2

我用Python编写具有味酸一个文件有问题泡椒问题写入文件

这里是我的代码:

test = "TEST" 
f1 = open(path+filename, "wb", 0) 
pickle.dump(test,f1,0) 
f1.close() 
return 

这使我在.txt文件输出为VTESTp0.我不知道这是为什么? 不应该只是保存为TEST

我很新pickle我甚至都不知道它直到今天还存在,所以如果我提出一个愚蠢的问题,我很抱歉。

+0

简短回答是否定的。 Pickle不用于生成要直接读取的输出文件,而是用pickle再次读取。 关键是当您关闭一个程序时保存数据,然后将其“上移”以再次加载它。 看看这个:http://wiki.python.org/moin/UsingPickle – Alberto 2011-06-12 11:51:55

回答

5

不,咸菜不会像字符串一样写字符串。 Pickle是一个序列化协议,它将对象转换为字节串,以便稍后重新创建它们。实际的格式取决于你使用的协议版本,但你应该把pickle数据当作一种不透明的类型。

如果要将字符串"TEST"写入文件,只需写入字符串本身即可。不要打扰泡菜。

+0

实际上,我试图保存元组数组(int,String)。 我只是把'测试'在那里,看看它是否工作。我正在为搅拌机中的高分系统做这件事。 我该如何去拯救这个? – Sean 2011-06-12 23:38:35

+0

你期望文件包含什么?如果你想要*人类可读的*,也许你想使用像JSON这样的格式。因此,Pickle不会生成可读的字符串。 – 2011-06-13 00:12:02

+0

当第一次发布这个问题,我不知道咸菜保存在不可读的格式。这没关系,但这并不重要 - 我只是感到困惑。 我将如何去保存/加载: 'scores = [(1489,“Sean”),(2850,“Bob”)]' 我可以使用'file.write'方法轻松保存,但不能确定如何阅读它。腌菜仍然是最好的选择? 请注意,现在我意识到我不必能够自己读取保存的txt文件。 – Sean 2011-06-13 00:31:30

0

想到酸洗二进制数据到磁盘。如果程序中的数据结构像大字典或数组一样需要一些时间来创建,这很有趣。您可以使用pickle将它们保存到文件中,然后在下次运行程序时使用pickle读取它们,从而为您节省构建数据结构所需的时间。缺点是其他的非Python程序将无法理解pickle文件。

由于泡菜是相当通用的,你当然也可以写简单的文本字符串到泡菜文件。但是如果你想进一步处理它们,例如在文本编辑器或其他程序中,您需要将它们逐字存储,如Thomas Wouters所示:

test = "TEST" 
f1 = open(path+filename, "wb", 0) 
f1.write(test) 
f1.close() 
return