首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python-3.x酸洗创建空文件

python-3.x酸洗创建空文件
EN

Stack Overflow用户
提问于 2015-09-25 10:04:59
回答 2查看 6.9K关注 0票数 5

我对python很陌生,我试图将一些复杂的数据结构存储/检索到文件中,并且正在尝试酸洗。然而,下面的示例继续创建一个空白文件(那里没有存储任何内容),我在第二步中遇到了一个错误。我一直在谷歌搜索,只是找到了其他的例子,完全符合我的-然而,它似乎不起作用。我可能错过了什么?提前到tx!

代码语言:javascript
复制
import pickle

messageToSend = ["Pickle", "this!"]
print("before: \n",messageToSend)

f = open("pickletest.pickle","wb")
pickle.dump(messageToSend,f)
f.close

g = open("pickletest.pickle","rb")
messageReceived = pickle.load(g)
print("after: \n",messageReceived)
g.close
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-25 13:22:11

你不能关闭文件。注意你写的是f.close而不是f.close()

在python中处理文件的正确方法是:

代码语言:javascript
复制
with open("pickletest.pickle", "wb") as f:
    pickle.dump(messageToSend, f)

因此,即使在处理过程中出现错误,它也会在with块结束时自动关闭文件。

另一个答案只适用于某些Python实现,因为它依赖于垃圾收集器关闭文件。这是相当不可靠和容易出错。在处理任何需要关闭的东西时,始终使用with

票数 7
EN

Stack Overflow用户

发布于 2015-09-25 10:42:53

我还不知道为什么,但是这个问题与您分配打开文件的变量有关。不要赋值变量,代码就可以工作了。

代码语言:javascript
复制
import pickle

messageToSend = ["Pickle", "this!"]
print("before: \n",messageToSend)

pickle.dump(messageToSend, open("pickletest.pickle","wb"))

messageReceived = pickle.load(open("pickletest.pickle","rb"))
print("after: \n",messageReceived)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32779770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档