【发布时间】:2025-12-08 08:35:02
【问题描述】:
有没有办法将大文件压缩成 .tar.gz 文件在谷歌驱动器中的较小 .zip?我尝试了 google appscript,但它创建了 .zip 文件但没有压缩。如何做到这一点?
【问题讨论】:
标签: google-apps-script compression google-drive-api
有没有办法将大文件压缩成 .tar.gz 文件在谷歌驱动器中的较小 .zip?我尝试了 google appscript,但它创建了 .zip 文件但没有压缩。如何做到这一点?
【问题讨论】:
标签: google-apps-script compression google-drive-api
我发现有一种使用Google Colaboratory 将大文件压缩/解压缩到Google Drive 的高效、快速、简单但间接的方法。
例如, 假设您的 Google Drive 中有一个名为 Dataset 的目录,大小为 5 GB,任务是将其压缩(压缩)为 Dataset.zip。
谷歌云端硬盘:
我的云端硬盘
数据集
步骤:
通过运行以下命令行将 Google 驱动器装载到 Google Colab 中:
from google.colab import drive
drive.mount('/content/gdrive')
注意:现在在左侧(文件)中,您可以在 gdrive 中观察您的 My Drive 以及在 My 中的文件夹 Dataset开车。
压缩前的截图。
通过以下命令运行更改当前目录。
cd gdrive/My Drive/
压缩文件/文件夹:Dataset 到 Dataset.zip 使用以下命令运行。
!zip -r Dataset.zip Dataset/
压缩后的截图:
Colab Drive Mount after zipping
Google Drive Screenshot after zipping
注意:以上命令的灵感来自于 ubuntu。因此,对于解压缩使用:
!unzip filename.zip -d ./filename
【讨论】:
我已经使用 10MB 大小的驱动器中的 pdf 文件尝试并测试了以下代码,它确实将其压缩为 9MB。我什至测试了一个云端硬盘文件(幻灯片),它确实压缩了它。
function fileZip(){
var files = DriveApp.getFilesByName('Google_Apps_Script_Second_Edition.pdf');
while (files.hasNext()) {
var file = files.next();
file = file.getBlob()}
DriveApp.createFile(Utilities.zip([file], 'tutorialFiles.zip'));
}
希望有帮助!
【讨论】:
实际上比这更容易。文件已经是 Blob(任何具有 getBlob() 的东西都可以传递给任何需要 Blob 的函数)。所以代码看起来像这样:
var folder = DocsList.getFolder('path/to/folder');
folder.createFile(Utilities.zip(folder.getFiles(), 'newFiles.zip'));
此外,如果您在文件夹中有多个同名文件,它将不起作用...Google 云端硬盘文件夹支持,但 Zip 文件不支持。
要使用多个具有相同名称的文件:
var folder = DocsList.getFolder('path/to/folder');
var names = {};
folder.createFile(Utilities.zip(folder.getFiles().map(function(f){
var n = f.getName();
while (names[n]) { n = '_' + n }
names[n] = true;
return f.getBlob().setName(n);
}), 'newFiles.zip'));
(Source)
【讨论】: