0

是否可以在内存中创建文件,并在将它们写入磁盘之前将它们排列成一种层次结构?

可以将open语句重定向到某种内存表示中吗?

我目前创建压缩目录的技术是这样的:

  1. 将内存中的所有内容写入临时文件夹
  2. 创建一个zipfile对象
  3. 重新加载所有以前制作的文件
  4. 将它们添加到 zip 并保存
  5. 删除所有临时文件。

最终以这样的方式结束:

Zipped_root 
     |
     |
     |---- file1.txt
     |
     |---- Image1.png
     |
     |---- Image2.png
     |
     |---- file...N.txt
     | 

有没有办法在内存中完成这一切?

4

2 回答 2

3

不久前,我实现了一个小型 python 库(https://github.com/kajic/vdir),用于创建虚拟目录、文件,甚至在需要时压缩它们。从自述文件(虚拟目录最后压缩):

from vdir import VDir

vd = VDir()

# Write to file
vd.open("path/to/some/file").write("your data")

# Create directory, go inside it, and write to some other file
vd.mkdir("foo")
vd.cd("foo")
vd.open("bar").write("something else") # writes to /foo/bar

# Read from file
vd.open("bar").read()

# Get the current path
vd.pwd()

# Copy directory and all its contents
vd.cp("/foo", "/foo_copy")

# Move the copied directory somewhere else
vd.mv("/foo_copy", "/foo_moved")

# Create a file, then remove it
vd.open("unnecessary").write("foo")
vd.rm("unnecessary")

# Walk over all directories and files in the virtual directory
vd.cd("/")
for base, dirnames, dirs, filenames, files in vd.walk():
  pass

# Recursively list directory contents
vd.ls()

# Create a zip from the virtual directory
zip = vd.compress()

# Get zip data
zip.read()

我只是为了好玩而做的,并没有对它进行广泛的测试,但无论如何它可能对你有用。

于 2013-09-27T02:17:41.870 回答
-1

是的。查看有关压缩对象的 zlib 模块文档。还有一个归档模块,您可以使用它来创建要压缩的归档对象。您可以随时访问文档:

$ python
>>> import zlib
>>> help(zlib)
于 2013-09-27T02:10:39.587 回答