首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pickle处理文件

使用pickle处理文件
EN

Stack Overflow用户
提问于 2011-02-12 20:24:33
回答 2查看 806关注 0票数 1

try.py:

代码语言:javascript
复制
import pickle

f=open('abc.dat','w')
x=[320,315,316]
y=pickle.load(f)
f.close()
f=open('abc.dat','w')
for i in x:
        y.append(i)
pickle.dump(y,f)
f.close()

use.py

代码语言:javascript
复制
import pickle
import os

os.system('try.py')
f=open('abc.dat', 'r')
print "abc.dat = "
x=pickle.load(f)
print x
print "end of abc.dat"
f.close();
y=x[:]
for z in x:
        y.remove(z)
        print "removing " + str(z)
        print str(y) + " and " + str(x)
        f=open('abc.dat', 'w')
        pickle.dump(y, f)
        f.close()

错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "G:\parin\new start\use.py", line 7, in <module>
    x=pickle.load(f)
  File "C:\Python26\lib\pickle.py", line 1370, in load
    return Unpickler(file).load()
  File "C:\Python26\lib\pickle.py", line 858, in load
        dispatch[key](self)
  File "C:\Python26\lib\pickle.py", line 880, in load_eof
    raise EOFError
EOFError
EN

回答 2

Stack Overflow用户

发布于 2011-02-12 20:30:14

错误在try.py

代码语言:javascript
复制
f=open('abc.dat','w')
y=pickle.load(f)

请注意,'w'模式将文件重置为0大小(即删除其内容)。传递'r'或不传递任何内容以打开abc.dat进行读取。

票数 3
EN

Stack Overflow用户

发布于 2011-02-12 20:30:27

这个例子对我不起作用。当文件不存在时,try.py会失败。

不过,我最大的建议是考虑使用JSON而不是pickle,因为这样可以获得更大的跨平台灵活性和更灵活的接口。

例如,使用此命令创建一个JSON行文件:

代码语言:javascript
复制
import json,random

with open("data.txt","w") as f:
    for i in range(0,10):
        info = {"line":i,
                "random":random.random()}
        f.write(json.dumps(info)+"\n")

(显然,让info成为你想要的任何东西。)

然后使用这个来阅读它们:

代码语言:javascript
复制
import json

for line in open("data.txt"):
    data = json.loads(line)
    print("data:" + str(data))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4978041

复制
相关文章

相似问题

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