免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3096 | 回复: 7
打印 上一主题 下一主题

关于类型转化和读写文件的 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-31 17:47 |只看该作者 |正序浏览
a=[3,4,5,6,7]
fd=open('a.txt','w')
fd.write(str(a))
fd.close()

现在我要把a读回来,该怎么办?

论坛徽章:
0
8 [报告]
发表于 2007-06-04 21:10 |只看该作者
共同学习。收藏,收藏。

论坛徽章:
0
7 [报告]
发表于 2007-06-02 18:26 |只看该作者
对啊, 我想要的就是这个pickle的功能 !

我编了个行列式算法程序,要用到全排列,而我用的全排列算法是很慢的,
我就想:如果能全排列预先弄好,存到一个文件里到时候读取,而不用程序运行时再产生,就会
好多了,就是用空间来赢取时间,毕竟我的硬盘空间是很大的 。

在matlab上,保存数据是很容易的,用save和load命令就可以了。原来,python中的pickle不仅能保存数,还能保存几乎一切对象。

查了一下用法:

写出如下程序搞定:

  1. # 试用pickle模块
  2. import cPickle as pickle
  3. b=56
  4. a=[[2,'a',1],[4,b,4+b]]
  5. fd=file('temp.txt','wb')
  6. pickle.dump(a,fd,True)
  7. fd.close()
  8. fd2=file('temp.txt','rb')
  9. a2=pickle.load(fd2)
  10. print a2
复制代码


感谢!

论坛徽章:
0
6 [报告]
发表于 2007-06-01 13:23 |只看该作者
如果是想实现对象的序列化,可以考虑使用pickle或cPickle模块。

论坛徽章:
0
5 [报告]
发表于 2007-05-31 18:26 |只看该作者

回复 4楼 niexining 的帖子

自己搞定了

import numarray
fd=open('a.txt','r')
t=fd.read()
a=numarray.array(t, numarray.Int32)

谢谢留意我的帖子,
谢谢Hex教了我一招字符串操作方法!

论坛徽章:
0
4 [报告]
发表于 2007-05-31 18:12 |只看该作者

回复 3楼 Hex 的帖子

谢谢Hex!
但是如果a=[[1,2,3],[4,5,6]]呢?
其实我想问的是 a 是任意数组,有可能是多维的。
python可不可以不用这些复杂的字符串操作来直接做到这一点呢?

论坛徽章:
0
3 [报告]
发表于 2007-05-31 18:01 |只看该作者
补充:我这个方法只限于a为整数或浮点数。若为浮点数,需要将最后一行的int(x)换成float(x)

论坛徽章:
0
2 [报告]
发表于 2007-05-31 17:59 |只看该作者
fd=open('a.txt')
s=fd.read()
a=s[1:len(s)-1].split(',')
[ int(x) for x in a]

print a


[3, 4, 5, 6, 7]
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP