免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 白水月
打印 上一主题 下一主题

求助:尝试修改文件中的部分内容出现问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-02-17 17:22 |只看该作者
原帖由 luffy.deng 于 2009-2-17 16:55 发表

是不是高效我不知道,但是确实简单。举个简单例子,给你一个这样的字典d={'aa':1,'bb':12345,'cc':'ert'},在程序里修改一下d['bb']的值,然后保存到文件里。其他程序从这个文件里读取这个字典,你打算怎么搞 ...

有P用啊!与楼主的提问完全相左,楼主想实现的 是比如说一个文档111222333
他想在222的地方用xxxx替换,但是由于xxxx是4个字符窜,所以 后面的333中第一个3会被吃掉
他想实现的在不重新写的情况下 用替换的方式让xxxx替换333同时333会自动跟在xxxx后面就类似插入的功能
你说的 字典也好 什么也罢 又不能从根本解决问题
pickle load进去后面不照样被吃掉,你不照样要重新写?
请问有什么用???

论坛徽章:
0
12 [报告]
发表于 2009-02-17 17:23 |只看该作者
原帖由 luffy.deng 于 2009-2-17 16:55 发表

是不是高效我不知道,但是确实简单。举个简单例子,给你一个这样的字典d={'aa':1,'bb':12345,'cc':'ert'},在程序里修改一下d['bb']的值,然后保存到文件里。其他程序从这个文件里读取这个字典,你打算怎么搞 ...

你用pickle难道你不seek了吗?
你不也要seek你不用seek定位 那么你怎么保证load的位置一定正确?

论坛徽章:
0
13 [报告]
发表于 2009-02-17 17:32 |只看该作者


[ 本帖最后由 luffy.deng 于 2009-2-17 19:57 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2009-02-17 18:17 |只看该作者
你好,luffy.deng
在你的例子中 数据是以某种特定格式存储的.   
而这种格式正式 pickle dump出来的格式(我只简单看了一下, 如果说错请指正 谢谢)
我不太理解LZ的描述中 "仅是变量" 是什么意思
如果LZ的文件满足2个条件
(1. 数据格式满足pickle 2. 数据结构已知)
那么用pickle有可能会简单。

至于用不用seek也取决于 文件的格式 如果纪录长度不定的话
用seeK也不是什么好主意。

修改普通文件(非特殊格式)一般都采用2种方式
1。 全部读到内存 修改后一次写道文件中
2。 采用流的方式修改 并将修改后的写道新文件中

Best Regards

论坛徽章:
0
15 [报告]
发表于 2009-02-17 18:21 |只看该作者
原帖由 DQP 于 2009-2-17 18:17 发表

在你的例子中 数据是以某种特定格式存储的.   

这是什么意思?一个字典而已,字符串,整型数等都可以。当然我的意思是保存old变量的文件要用pickle写,随便搞个已经存在的文件当然不行。

[ 本帖最后由 luffy.deng 于 2009-2-17 18:32 编辑 ]

论坛徽章:
0
16 [报告]
发表于 2009-02-17 18:30 |只看该作者
楼主就是说xxxxyyzzzzzz把yy替换成ddd需不需要重写文件,答案是肯定需要的

你们居然能歪楼歪到pickle上。。。。。。。。。。。。。。。。。

论坛徽章:
0
17 [报告]
发表于 2009-02-17 19:08 |只看该作者
原帖由 3227049 于 2009-2-17 18:30 发表
楼主就是说xxxxyyzzzzzz把yy替换成ddd需不需要重写文件,答案是肯定需要的

你们居然能歪楼歪到pickle上。。。。。。。。。。。。。。。。。

  跑得太远了 回不去了。。。。。。。。。。。

论坛徽章:
0
18 [报告]
发表于 2009-02-17 19:55 |只看该作者
原帖由 3227049 于 2009-2-17 18:30 发表
楼主就是说xxxxyyzzzzzz把yy替换成ddd需不需要重写文件,答案是肯定需要的

这个还用你说?这里说的可以不直接写xxxxyyzzzzzz到文件里,以后修改就方便了。还是不要讨论了,各人用各人喜欢的办法好了。

[ 本帖最后由 luffy.deng 于 2009-2-17 20:02 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2009-02-17 20:12 |只看该作者
原帖由 luffy.deng 于 2009-2-17 19:55 发表

这个还用你说?这里说的可以不直接写xxxxyyzzzzzz到文件里,以后修改就方便了。


为了修改方便,你去把纯真IP库pickle一下?

pickle的主要应用是什么?
1,缓存,要么读,要么过期直接重写,有需要改的么?
2,数据传递,这个本来就是只读的,还是那句,有需要改的么?

另外,像关系数据库,或者像berkeleydb,都需要对库定期压缩的,不会因为删除数据即时重写主要数据的,难道你让他们改玩pickle?

论坛徽章:
0
20 [报告]
发表于 2009-02-17 20:35 |只看该作者
lz不正是要修改old变量然后缓存到文件里?
“或者像berkeleydb,都需要对库定期压缩的,不会因为删除数据即时重写主要数据的”
这个我没搞明白你是什么意思,可否再解释一下?我这里主要使用oracle好像没有你说的定期压缩之类的东西。另外具体问题具体分析。“把纯真IP库pickle一下”这个就不必了。

[ 本帖最后由 luffy.deng 于 2009-2-17 20:38 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP