有没有办法将大文件压缩成google驱动器中较小的.zip .tar.gz文件?我尝试了谷歌appscript,但它创建了.zip文件,但没有压缩。怎么做?
答案 0 :(得分:5)
我发现有一种高效,快速,简单但间接的方法,可以使用Google Colaboratory将大文件压缩/解压缩到Google云端硬盘。
例如, 让我们假设您的Google云端硬盘中有一个名为数据集的目录,大小为5 GB,任务是将其压缩(压缩)到 Dataset.zip 。
Google云端硬盘:
我的云端硬盘
数据集
步骤:
通过运行以下命令行将Google驱动器安装到Google Colab:
from google.colab import drive
drive.mount('/content/gdrive')
注意:现在,在左侧(文件)中,您可以在 gdrive 中看到我的驱动器,在我的内部看到文件夹数据集开车。
压缩前的屏幕截图。
通过执行以下命令来更改当前目录。
cd gdrive/My Drive/
压缩文件/文件夹:使用以下命令运行数据集到 Dataset.zip 。
!zip -r Dataset.zip Dataset/
压缩后的屏幕截图:
Colab Drive Mount after zipping
Google Drive Screenshot after zipping
注意:以上命令受ubuntu启发。因此,对于解压缩,请使用:
!unzip filename.zip -d ./filename
答案 1 :(得分:3)
我已经尝试并使用pdf文件测试了以下代码,该文件位于我的10MB大小的驱动器中,它确实压缩了9MB。我甚至测试过Drive文件(幻灯片),它确实压缩了它。
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'));
}
希望有所帮助!
答案 2 :(得分:1)
实际上它比那更容易。文件已经是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)