如果我选择一个zip文件并右键单击"在此处提取",则会创建一个包含zip文件名的文件夹,并将zip文件的整个内容提取到其中.
但是,我想通过shell转换几个zip文件.但是,当我这样做
unzip filename.zip
Run Code Online (Sandbox Code Playgroud)
该文件夹"filename"未创建,但所有文件都被解压缩到当前目录中.
我查看了参数,但没有这样的参数.我也试过了
for zipfile in \*.zip; do mkdir $zipfile; unzip $zipfile -d $zipfile/; done
Run Code Online (Sandbox Code Playgroud)
但.zip必须使用sed删除2. $ zipfile和4. $ zipfile 的扩展名.如果我做
for zipfile in \*.zip; do mkdir sed 's/\.zip//i' $zipfile; unzip $zipfile -d sed 's/\.zip//i' $zipfile/; done
Run Code Online (Sandbox Code Playgroud)
它不起作用.
如何正确更换.zip扩展名$zipfile?
有没有比shell脚本更简单的方法?
我想从互联网上下载一个zip文件并将其解压缩到内存而不保存到临时文件.我怎样才能做到这一点?
这是我尝试过的:
var url = 'http://bdn-ak.bloomberg.com/precanned/Comdty_Calendar_Spread_Option_20120428.txt.zip';
var request = require('request'), fs = require('fs'), zlib = require('zlib');
request.get(url, function(err, res, file) {
if(err) throw err;
zlib.unzip(file, function(err, txt) {
if(err) throw err;
console.log(txt.toString()); //outputs nothing
});
});
Run Code Online (Sandbox Code Playgroud)
[编辑]正如,建议,我尝试使用adm-zip库,我仍然无法使这项工作:
var ZipEntry = require('adm-zip/zipEntry');
request.get(url, function(err, res, zipFile) {
if(err) throw err;
var zip = new ZipEntry();
zip.setCompressedData(new Buffer(zipFile.toString('utf-8')));
var text = zip.getData();
console.log(text.toString()); // fails
});
Run Code Online (Sandbox Code Playgroud) 我尝试从包含一个文件夹中的子文件夹的.zip中提取所有文件.我希望子文件夹中的所有文件只在一个文件夹中提取,而不保留原始结构.此刻,我提取所有内容,将文件移动到文件夹,然后删除以前的子文件夹.具有相同名称的文件被覆盖.
在写文件之前可以这样做吗?
这是一个结构,例如:
my_zip/file1.txt
my_zip/dir1/file2.txt
my_zip/dir1/dir2/file3.txt
my_zip/dir3/file4.txt
Run Code Online (Sandbox Code Playgroud)
最后我告诉你:
my_dir/file1.txt
my_dir/file2.txt
my_dir/file3.txt
my_dir/file4.txt
Run Code Online (Sandbox Code Playgroud)
我可以在此代码中添加什么内容?
import zipfile
my_dir = "D:\\Download\\"
my_zip = "D:\\Download\\my_file.zip"
zip_file = zipfile.ZipFile(my_zip, 'r')
for files in zip_file.namelist():
zip_file.extract(files, my_dir)
zip_file.close()
Run Code Online (Sandbox Code Playgroud)
如果我从zip_file.namelist()重命名文件路径,我有这个错误:
KeyError: "There is no item named 'file2.txt' in the archive"
Run Code Online (Sandbox Code Playgroud) 是否有一个简单的示例,说明如何解压缩.zip文件并将文件解压缩到目录?我目前正在使用zlib,虽然我知道zlib没有直接处理zip文件,但在zlibs的"contrib"库中似乎还有其他一些东西.我注意到并阅读了"minizip",在阅读了一些文档并查看了一些代码之后,我没有看到如何解压缩.zip文件并将文件解压缩到目录的简单示例.
我想找到一种独立于平台的方式,但如果不可能,那么我需要为windows和mac找到一种方法.
我可以通过maven-dependency插件解压zip文件,但目前我有问题,在zip文件里面包含其他zip文件,我也需要解压缩它们.我怎样才能做到这一点?
我正在尝试制作一个脚本,用于从一个目录中的文件夹中解压缩所有.tar.gz文件.例如,我将调用一个文件(testing.tar.gz).然后如果我手动操作,我可以按"提取",然后.tar.gz文件将创建一个新文件,并调用testing.tar.最后,如果我重复按"提取此处"的过程,.tar文件会将所有.pdf文件生成.
我想知道我怎么能这样做,而且我的代码在这里,似乎并不是现实的工作.
import os
import tarfile
import zipfile
def extract_file(path, to_directory='.'):
if path.endswith('.zip'):
opener, mode = zipfile.ZipFile, 'r'
elif path.endswith('.tar.gz') or path.endswith('.tgz'):
opener, mode = tarfile.open, 'r:gz'
elif path.endswith('.tar.bz2') or path.endswith('.tbz'):
opener, mode = tarfile.open, 'r:bz2'
else:
raise ValueError, "Could not extract `%s` as no appropriate extractor is found" % path
cwd = os.getcwd()
os.chdir(to_directory)
try:
file = opener(path, mode)
try: file.extractall()
finally: file.close()
finally:
os.chdir(cwd)
Run Code Online (Sandbox Code Playgroud) 如何压缩和解压缩已经存在于DDMS中的文件:data/data/mypackage/files/我需要一个简单的例子.我已经搜索过zip和解压缩相关内容.但是,没有一个例子可供我使用.谁能说出一些例子.提前谢谢.
我的应用程序中有一个奇怪的错误.
在我的应用程序中,可以下载zipFile,读取内容,并删除它.它究竟是什么并不重要.
问题:仅在Motorola Xoom(版本4.0.4)上我可以下载文件,解压缩,我可以读取数据,我可以删除所有内容.但是,如果我再次尝试下载文件并解压缩文件并将文件复制到SD卡,则会因错误EBUSY(设备或资源繁忙)而崩溃.
我找不到任何解决方案.在所有其他设备上它工作正常,没有错误或问题.
logcat的:
07-18 12:27:46.774: E/PrepareMagTask(10057): IOException
07-18 12:27:46.774: E/PrepareMagTask(10057): java.io.FileNotFoundException: /mnt/sdcard/Android/data/com.xxxxxx.android/files/content/23760/emag.db: open failed: EBUSY (Device or resource busy)
07-18 12:27:46.774: E/PrepareMagTask(10057): at libcore.io.IoBridge.open(IoBridge.java:406)
07-18 12:27:46.774: E/PrepareMagTask(10057): at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
07-18 12:27:46.774: E/PrepareMagTask(10057): at java.io.FileOutputStream.<init>(FileOutputStream.java:73)
07-18 12:27:46.774: E/PrepareMagTask(10057): at com.xxxxx.android.util.io.ZipHelper.uncompressEntry(ZipHelper.java:35)
07-18 12:27:46.774: E/PrepareMagTask(10057): at com.xxxxx.android.task.PrepareMagTask.doInBackground(PrepareMagTask.java:271)
07-18 12:27:46.774: E/PrepareMagTask(10057): at com.xxxxx.android.task.PrepareMagTask.doInBackground(PrepareMagTask.java:1)
07-18 12:27:46.774: E/PrepareMagTask(10057): at android.os.AsyncTask$2.call(AsyncTask.java:264)
07-18 12:27:46.774: E/PrepareMagTask(10057): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
07-18 12:27:46.774: E/PrepareMagTask(10057): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-18 12:27:46.774: E/PrepareMagTask(10057): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
07-18 12:27:46.774: E/PrepareMagTask(10057): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) …Run Code Online (Sandbox Code Playgroud) 解压缩android上的文件似乎非常慢.起初我以为这只是模拟器,但在手机上似乎是一样的.我尝试过不同的压缩级别,并最终降级到存储模式,但仍需要很长时间.
无论如何,一定有理由!还有其他人有这个问题吗?我的解压缩方法如下所示:
public void unzip()
{
try{
FileInputStream fin = new FileInputStream(zipFile);
ZipInputStream zin = new ZipInputStream(fin);
File rootfolder = new File(directory);
rootfolder.mkdirs();
ZipEntry ze = null;
while ((ze = zin.getNextEntry())!=null){
if(ze.isDirectory()){
dirChecker(ze.getName());
}
else{
FileOutputStream fout = new FileOutputStream(directory+ze.getName());
for(int c = zin.read();c!=-1;c=zin.read()){
fout.write(c);
}
//Debug.out("Closing streams");
zin.closeEntry();
fout.close();
}
}
zin.close();
}
catch(Exception e){
//Debug.out("Error trying to unzip file " + zipFile);
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个我想要阅读的文件,它本身是在zip存档中压缩的.例如,parent.zip包含child.zip,其中包含child.txt.我在阅读child.zip时遇到了麻烦.谁能纠正我的代码?
我假设我需要创建一个类似文件的对象的child.zip,然后用第二个zipfile实例打开它,但是对于python我是新的zipfile.ZipFile(zfile.open(name))是愚蠢的.它引发了一个zipfile.BadZip文件:"文件不是一个zip文件"on(独立验证)child.zip
import zipfile
with zipfile.ZipFile("parent.zip", "r") as zfile:
for name in zfile.namelist():
if re.search(r'\.zip$', name) is not None:
# We have a zip within a zip
with **zipfile.ZipFile(zfile.open(name))** as zfile2:
for name2 in zfile2.namelist():
# Now we can extract
logging.info( "Found internal internal file: " + name2)
print "Processing code goes here"
Run Code Online (Sandbox Code Playgroud)