在将文件添加到 TAR 文件的过程中删除原始文件
Deleting original files as you go along adding files to a TAR file
我写了一个小型服务器函数,目的是tar
将一堆本地下载的文件放在一起,然后删除原始文件。它看起来像这样:
with tarfile.open(archive_filename, "w:gz") as tar:
for pb in designated_objects:
bucket.download_file(pb.key, pb.key)
tar.add(pb.key)
os.delete(pb.key)
我的期望是这将生成一个 tarfile,其中包含我需要的所有数据和一个空目录。这里的想法是我想尽可能地减少我的磁盘使用量。但是,我不确定是否允许在完成生成 tarfile 之前删除文件(如此处所做的那样)。
这个表达式会按预期工作吗?
如果不会,是否有类似于附加模式的东西可以?
正如预期的那样,原始文件被填充,然后被删除。但是,存档的行为是不寻常的。当此代码块为运行时,会生成no存档。事实上,这个代码块什么都不做(除了删除你的文件)。
考虑到在 with
语句中使用 pass
(如下面的代码)实际上会将一个空存档写入磁盘,我发现这种行为特别不寻常和令人惊讶。所以从某种意义上说,给定的代码块 甚至比什么都不做 !
with tarfile.open('archive_filename.xy.gz', "w:gz") as tar:
pass
作为参考,这种行为是我在 Python 3.6 中得到的。 Python 其他版本的行为可能不同。
我写了一个小型服务器函数,目的是tar
将一堆本地下载的文件放在一起,然后删除原始文件。它看起来像这样:
with tarfile.open(archive_filename, "w:gz") as tar:
for pb in designated_objects:
bucket.download_file(pb.key, pb.key)
tar.add(pb.key)
os.delete(pb.key)
我的期望是这将生成一个 tarfile,其中包含我需要的所有数据和一个空目录。这里的想法是我想尽可能地减少我的磁盘使用量。但是,我不确定是否允许在完成生成 tarfile 之前删除文件(如此处所做的那样)。
这个表达式会按预期工作吗?
如果不会,是否有类似于附加模式的东西可以?
正如预期的那样,原始文件被填充,然后被删除。但是,存档的行为是不寻常的。当此代码块为运行时,会生成no存档。事实上,这个代码块什么都不做(除了删除你的文件)。
考虑到在 with
语句中使用 pass
(如下面的代码)实际上会将一个空存档写入磁盘,我发现这种行为特别不寻常和令人惊讶。所以从某种意义上说,给定的代码块 甚至比什么都不做 !
with tarfile.open('archive_filename.xy.gz', "w:gz") as tar:
pass
作为参考,这种行为是我在 Python 3.6 中得到的。 Python 其他版本的行为可能不同。