我确信那里有一个成熟的,广泛使用的ZIP文件工具,我似乎无法找到答案.与Apache Commons,Google Collections,Joda Time具有相同成熟度的东西
我正在尝试将zip文件作为字节数组(ZipInputStream)进行最简单的任务,并将其解压缩到一个文件夹中.这似乎是一项非常乏味的任务.
我希望有一个语法糖API,像这样做somethnig:
public class MyDreamZIPUtils
public static void extractToFolder(ZipInputStream zin, File outputFolderRoot){
...
}
public static void extractToFolder(ZipFile zf, File outputFolderRoot){
...
}
public static zipFolder(File folderToZip, File zippedFileLocation){
...
}
public static zipFolder(File folderToZip, ByteArrayOutputStream zipResult){
...
}
Run Code Online (Sandbox Code Playgroud)
有这样的吗?我错过了什么吗?
有人可以指出我的代码中可能包含的任何错误吗?我想让代码尽可能简单,但由于内存错误而失败。一些压缩文件确实可以很好地解压......
import zipfile
import from os.path isdir, join, normpath, split
print "Unzipping data"
z = zipfile.ZipFile("C:\\Incoming\\MyZipFile.zip", 'r')
print z.namelist()
for each in z.namelist():
if not each.endswith('/'):
root, name = split(each)
print name
file(join("C:\\Incoming\\", name), 'wb').write(z.read(each))
z.close()
Run Code Online (Sandbox Code Playgroud)
实际生成的错误信息如下:
Traceback (most recent call last):
File "C:\\Scripts\\Zip_import_test.py", line 30, in <module>
file(join("C:\\Incoming\\", name), 'wb').write(zip.read(each))
File "C:\\Python25\lib\zipfile.py, line 501, in read
bytes = dc.decompress(bytes)
Memory Error
Run Code Online (Sandbox Code Playgroud)
感谢您的任何建议。弗兰克·奥吉米恩
我希望能够获取 github 存储库并将其内容解压缩到临时目录。我知道 devtools 中有 install_github 的功能,但我不想安装,这对于所有 github 存储库来说更通用。
这是我尝试过的:
url <- "https://github.com/trinker/reports/zipball/master"
tmp <- tempfile( fileext = ".zip" )
download.file(url, tmp)
unzip(tmp, exdir = tempdir())
Run Code Online (Sandbox Code Playgroud)
这导致:
Warning message:
In unzip(tmp, exdir = tempdir()) : internal error in unz code
Run Code Online (Sandbox Code Playgroud)
同样,我不想安装,但可以访问临时目录中的内部文件,退出时我将删除这些文件。
我有一个用户上传 zip 文件的表单。我正在使用文件系统。
是否可以将文件上传到 S3,然后在那里解压缩文件?
或者
我应该先解压缩文件,然后将它们上传到 S3。
压缩后的文件夹中有很多文件(大约 500-600 个小文件),那么 Laravel 如何处理如此大量的文件?系统会在文件上传时停止运行还是在后台继续运行?像一个队列
我试图使我的研究可重现,将数据存储在figshare。
当我下载并解压缩 R 中的数据时,发生了一些奇怪的事情。
这是 zip
如果我手动下载它,它打开正常;但是当我尝试使用R脚本获取它时,下载的存档已损坏。任何想法问题出在哪里?
重现我的错误的代码
url <- 'https://ndownloader.figshare.com/files/4797355'
path <- 'test/missing_data_raw.zip'
ifelse(file.exists(path1), yes = 'file alredy exists', no = download.file(url1, path1))
unzip(zipfile = path1,exdir = 'test')
Run Code Online (Sandbox Code Playgroud) 我在多个文件夹中有 .gz 压缩文件,这些文件夹都在一个名为“usa”的主文件夹中。我能够使用下面的代码提取单个文件。
import gzip
import shutil
source=r"C:\usauc300.dbf.gz"
output=r"C:\usauc300.dbf"
with gzip.open(source,"rb") as f_in, open(output,"wb") as f_out:
shutil.copyfileobj(f_in, f_out)
Run Code Online (Sandbox Code Playgroud)
我已经搜索了高低,但找不到与命令行选项等效的选项gzip -dr.....,这意味着“解压缩递归”并将遍历每个文件夹并将内容提取到同一位置,同时删除原始压缩文件。有谁知道我如何使用 python 循环浏览文件夹中的文件夹,找到任何压缩文件并将它们解压缩到同一位置,同时用压缩文件替换解压缩文件?
“ https://www.tokopedia.com/sitemap/product/1.xml.gz ”这是我的网址,该网址包含产品网址的数量,但它已压缩,我不知道如何解压缩该网址以及如何获取来自其中的数据,如何使用 scrapy 或 Beautiful soup 等其他 scrapy 库解压它
我有相当多的目录(500+),每个目录(和可能的子目录)包含 4 个或更多 zip 文件。我设法拼凑了一个 bash 脚本,该脚本解压缩压缩文件,同时将 zip 文件名保持为目录和所有目录层次结构。
例如:如果我有一个名为 的 zip 文件100011_test123.zip,它包含 10 个文件。该脚本会将所有文件解压缩到100011_test123/目录中。100010文件名/目录名中下划线前出现的数字是完全随机的。
这是实际的 bash 脚本:
#!/bin/bash
cd <directory-with-large-number-of-zip-files>
find . -name "*.zip" | while read filename; do unar -d -o "`dirname "$filename"`" "$filename"; done;
find . -name "*.zip" -type f -delete
Run Code Online (Sandbox Code Playgroud)
现在我想更新脚本以便100010_从 .zip 文件名中删除.zip 文件名而不篡改目录结构/层次结构(我想有一种方法可以在使用unar命令之前重命名 zip 文件)然后将文件解压缩到一个目录中100010_一开始。
我已经坚持了 3 天多。对此的任何见解将不胜感激。
谢谢你。
我从Mac终端Bash Shell登录到我的服务器并且unzip命令无法正常工作我不断收到以下消息:
bash: unzip: command not found
Run Code Online (Sandbox Code Playgroud)
我可以通过SSH从Mac终端解压缩文件吗?
我想将压缩文件解压缩files.zip到一个与我的工作目录不同的目录.说,我的工作目录是/home/user/address,我想解压缩文件/home/user/name.
我试着这样做
#!/usr/bin/perl
use strict;
use warnings;
my $files= "/home/user/name/files.zip"; #location of zip file
my $wd = "/home/user/address" #working directory
my $newdir= "/home/user/name"; #directory where files need to be extracted
my $dir = `cd $newdir`;
my @result = `unzip $files`;
Run Code Online (Sandbox Code Playgroud)
但是当从我的工作目录运行上面的内容时,所有文件都会在工作目录中解压缩.如何将未压缩的文件重定向到$newdir?
我们在脚本中使用dUnzip2在下载之前解压缩文件,编写许可证然后使用zip.lib压缩并提供服务.但是dUnzip2正在使用:
foreach ($f as $file_row => $file)
Run Code Online (Sandbox Code Playgroud)
这适用于小文件,但对于大于10 MB的文件,它应该使用类似的东西
for($n = 1;$n < count($f);$n++){
$file = $f[$n];
}
Run Code Online (Sandbox Code Playgroud)
这导致大于10MB的文件的内存限制问题.我们必须始终为该lib增加服务器的内存限制.脚本本身是巨大的,说实话,我不敢承担修改它的任务.
那么你知道任何其他解压缩库可以完成与dUnzip2或更好的解决方案相同的工作吗?
我下载了一个带有以下子文件夹结构的zip文件(20000101 [1] .zip)
\home\ftp\pub\account\lmp\20010101.csv.
Run Code Online (Sandbox Code Playgroud)
你们有任何想法如何提取文件20010101.csv.
谢谢.