获取已打开架子的文件路径?
get file path of already opened shelve?
有什么方法可以找到已打开的搁置对象的路径和文件名吗?
我查看了搁置的文档,但我的印象是它更像是后端实现的包装器,我想并不是所有的后端实现都以某种方式查询它们正在使用的文件。
您可以获得文件名,但它没有记录并且可能会在任何 python 更新时中断:
>>> d=shelve.open("/some/datafile.shelve")
>>> d.dict._datfile
'/some/datafile.shelve.dat'
你为什么需要它?您在打开书架时提供了文件名,所以您不能不参考那个原始文件名吗?
如果确实需要,您可以简单地将文件名存储在生成的搁置对象中。这样你就可以用你自己给它的名字来引用它,而不依赖于实现的内部:
>>> filename = "/some/datafile.shelve"
>>> d=shelve.open(filename)
>>> d.original_filename = filename
>>> d
<shelve.DbfilenameShelf object at 0x035A6550>
>>> d.original_filename
'/some/datafile.shelve'
>>>
它不会自动知道附加的“.dat”后缀。
有什么方法可以找到已打开的搁置对象的路径和文件名吗?
我查看了搁置的文档,但我的印象是它更像是后端实现的包装器,我想并不是所有的后端实现都以某种方式查询它们正在使用的文件。
您可以获得文件名,但它没有记录并且可能会在任何 python 更新时中断:
>>> d=shelve.open("/some/datafile.shelve")
>>> d.dict._datfile
'/some/datafile.shelve.dat'
你为什么需要它?您在打开书架时提供了文件名,所以您不能不参考那个原始文件名吗? 如果确实需要,您可以简单地将文件名存储在生成的搁置对象中。这样你就可以用你自己给它的名字来引用它,而不依赖于实现的内部:
>>> filename = "/some/datafile.shelve"
>>> d=shelve.open(filename)
>>> d.original_filename = filename
>>> d
<shelve.DbfilenameShelf object at 0x035A6550>
>>> d.original_filename
'/some/datafile.shelve'
>>>
它不会自动知道附加的“.dat”后缀。