为了账号安全,请及时绑定邮箱和手机立即绑定

如何在python中将文件搁置为空?

如何在python中将文件搁置为空?

桃花长相依 2021-03-29 17:23:03
我创建了一个搁置文件并插入了词典数据。现在,我想清理该搁置文件,以将其作为干净文件重复使用。import shelvedict = shelve.open("Sample.db")# insert some data into sample.dbdict = { "foo" : "bar"}#Now I want to clean entire shelve file to re-insert the data from begining.
查看完整描述

3 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

货架的行为就像字典一样,因此:

dict.clear()

或者,您始终可以删除文件并搁置创建一个新文件。


查看完整回答
反对 回复 2021-04-06
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

dict.clear()是最简单的方法,应该是有效的,但实际上似乎并没有清除架子文件(Python 3.5.2,Windows 7 64位)。例如,.dat我每次运行以下代码段时,文件架文件的大小都会增加,而我希望它始终具有相同的大小:


shelf = shelve.open('shelf')

shelf.clear()

shelf['0'] = list(range(10000))

shelf.close()

更新: dbm.dumb,它shelve使用与Windows下的底层数据库,包含此TODO项目在其代码:


回收可用空间(当前,一旦被删除或扩展的项目占用的空间就永远不会重复使用)

这解释了不断增长的架子文件问题。


因此,而不是dict.clear(),我使用的是shelve.open带flag='n'。报价shelve.open()文件:


可选的flag参数与dbm.open()的flag参数具有相同的解释。


和dbm.open()文档为flag='n':


始终创建一个新的空数据库,以供读取和写入


如果架子已经打开,则用法为:


shelf.close()

shelf = shelve.open('shelf', flag='n')


查看完整回答
反对 回复 2021-04-06
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

这些都不是真正有效的方法我最终要做的是创建一个处理文件删除的功能。


import shelve

import pyperclip

import sys

import os


mcbShelf = shelve.open('mcb')

command = sys.argv[1].lower()


def remove_files():

    mcbShelf.close()

    os.remove('mcb.dat')

    os.remove('mcb.bak')

    os.remove('mcb.dir')


if command == 'save':

    mcbShelf[sys.argv[2]] = pyperclip.paste()

elif command == 'list':

    pyperclip.copy(", ".join(mcbShelf.keys()))

elif command == 'del':

    remove_files()

else:

    pyperclip.copy(mcbShelf[sys.argv[1]])


mcbShelf.close()


查看完整回答
反对 回复 2021-04-06
  • 3 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信