猿问

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

我创建了一个搁置文件并插入了词典数据。现在,我想清理该搁置文件,以将其作为干净文件重复使用。


import shelve

dict = shelve.open("Sample.db")

# insert some data into sample.db

dict = { "foo" : "bar"}


#Now I want to clean entire shelve file to re-insert the data from begining.


桃花长相依
浏览 194回答 3
3回答

GCT1015

货架的行为就像字典一样,因此:dict.clear()或者,您始终可以删除文件并搁置创建一个新文件。

红糖糍粑

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')

qq_遁去的一_1

这些都不是真正有效的方法我最终要做的是创建一个处理文件删除的功能。import shelveimport pyperclipimport sysimport osmcbShelf = 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()
随时随地看视频慕课网APP

相关分类

Python
我要回答