我需要能够创建一个具有指定文件名的临时文件并将数据写入其中,然后将带有文件名的文件与其他文件一起压缩:
fd, path = tempfile.mkstemp(".bin", "filename", "~/path/to/working/directory/")
try:
with os.fdopen(fd, "wb") as tmp:
tmp.write(data)
with ZipFile("zip.zip", "w") as zip:
zip.write("filename")
zip.writestr("file2", file2_str)
zip.writestr("file3", file3_str)
# ...
finally:
os.remove(path)
我想我一定是误解了 mkstemp 的工作原理,我在这里的第一行代码中得到了错误:
FileNotFoundError: [Errno 2] No such file or directory: '~/path/to/working/directory/filenameq5st7dey.bin'
在将后缀放在文件上之前,看起来一堆垃圾被添加到文件名中。我已经尝试过不带后缀的方法,但文件名末尾仍然有垃圾。
除了文件名中的垃圾之外,为什么我会收到文件未找到错误,而不是在我的目录中创建一个具有该名称的临时文件(加上垃圾)?