我正在做一个必须存储.hg
目录的项目。最简单的方法是打包.hg
成hg.tar
. 我将它保存在 MongoDB 的 GridFS 文件系统中。
如果我按照这个计划去,我必须把焦油读出来。
import tarfile, cStringIO as io
repo = get_repo(saved_repo.id)
ios = io.StringIO()
ios.write(repo.hgfile.read())
ios.seek(0)
tar = tarfile.open(mode='r', fileobj=ios)
members = tar.getmembers()
#for info in members:
# tar.extract(info.name, '/tmp')
for file in members:
print file.name, file.isdir()
这是一个工作代码。随着循环的继续,我可以获得所有文件和目录的名称。
我的问题是如何将这个 tar 提取到一个有效的、类似文件系统的目录中。我可以.extractfile
单独进入内存,但如果我想输入 Mercurial API,我可能需要整个目录作为.hg
内存中的单个 DIRECTORY ,就像它们在文件系统中的存在方式一样。
想法?