是否有一个库可以用来解压缩受密码保护的文件(网站下载时我会在文件上输入密码)?有大量的库可以解压缩普通文件,但我找不到任何可以使用密码的文件.
在这里,我找到了一些有用的开始.但我宁愿不使用child_process
和使用内置的unix解压缩功能,但这可能是我的最后手段.我甚至会在加密代码上执行自己的操作,但我甚至无法确定如何确定加密类型(它似乎非常标准,因为我可以在终端中执行).
我宁愿不这样做,但我担心这是我唯一的选择,所以我尝试了以下方法:
var fs = require('fs')
, unzip = require('unzip')
, spawn = require('child_process').spawn
, expand = function(filepath, cb) {
var self = this
, unzipStream = fs.createReadStream(filepath).pipe(unzip.Parse())
, xmlData = '';
unzipStream.on('entry', function (entry) {
var filename = entry.path;
// first zip contains files and one password protected zipfile.
// Here I can just do pipe(unzip.Parse()) again, but then i just get a giant encoded string that I don't know how to handle, so i …
Run Code Online (Sandbox Code Playgroud) 我有一个可以按原样运行的SSIS项目,但是当我尝试编辑它时,我收到一个错误:
"zipfile"这个名称在当前上下文中不存在
没有编辑,它工作正常.
产生错误的代码:
public void Main()
{
// TODO: Add your code here
string moduleName = Dts.Variables["User::ModuleName"].Value.ToString();
string s = Dts.Variables["User::ZipFileLocation"].Value.ToString().TrimEnd('\\') + "\\" + moduleName + "\\" + moduleName + "_" + DateTime.Now.ToString("ddMMyyyy");
// TODO: Add your code here
string startPath = s;
string zipPath = s + ".zip";
try
{
File.Delete(zipPath);
ZipFile.CreateFromDirectory(startPath, zipPath);
}
catch (Exception e)
{
}
Dts.TaskResult = (int)ScriptResults.Success;
}
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
我在我的Android APP中使用NanoHTTPD作为Web服务器,我希望在服务器端压缩一些文件并创建一个InputStream,然后使用Code A在客户端下载InputStream.
我在如何压缩和解压缩文件中读过代码B ?,但如何在Android中创建ZIP InputStream而不首先创建ZIP文件?
顺便说一句,我不认为Code C是好方法,因为它先制作ZIP文件,然后将ZIP文件转换为FileInputStream,我希望直接创建一个ZIP InputStream!
代码A.
private Response ActionDownloadSingleFile(InputStream fis) {
Response response = null;
response = newChunkedResponse(Response.Status.OK, "application/octet-stream",fis);
response.addHeader("Content-Disposition", "attachment; filename="+"my.zip");
return response;
}
Run Code Online (Sandbox Code Playgroud)
代码B.
public static void zip(String[] files, String zipFile) throws IOException {
BufferedInputStream origin = null;
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile)));
try {
byte data[] = new byte[BUFFER_SIZE];
for (int i = 0; i < files.length; i++) {
FileInputStream fi = new FileInputStream(files[i]);
origin = new BufferedInputStream(fi, …
Run Code Online (Sandbox Code Playgroud) 我有一个压缩输出文件的脚本.问题是其中一个文件超过4Gigs.如何将我的脚本转换为使用ZIP64扩展而不是标准zip?
这是我目前如何拉链:
try:
import zlib
compression = zipfile.ZIP_DEFLATED
except:
compression = zipfile.ZIP_STORED
modes = { zipfile.ZIP_DEFLATED: 'deflated',
zipfile.ZIP_STORED: 'stored',
}
compressed_name = 'edw_files_' + datetime.strftime(date(), '%Y%m%d') + '.zip'
print 'creating archive'
zf = zipfile.ZipFile('edw_files_' + datetime.strftime(date(), '%Y%m%d') + '.zip', mode='w')
try:
zf.write(name1, compress_type=compression)
zf.write(name2, compress_type=compression)
zf.write(name3, compress_type=compression)
finally:
print 'closing'
zf.close()
Run Code Online (Sandbox Code Playgroud)
谢谢!法案
我正在尝试从 Django api 下载一个 zip 文件并让用户下载它。zip 中有两个 .csv 文件。
我可以单独下载单个 .csv 文件,但是当我尝试下载 zip 并解压缩时,我收到 zip 已损坏的错误。对于健全性检查,我可以通过邮递员发送请求。我能够使用它成功下载和解压缩文件。
这是我的代码片段:
axios
.post('http://0.0.0.0:8000/sheets/', data,
{
headers: {
'Content-Type': 'multipart/form-data',
'responseType': 'arraybuffer'
}
})
.then(res => {
console.log(res.data)
const disposition = res.request.getResponseHeader('Content-Disposition')
var fileName = "";
var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
var matches = filenameRegex.exec(disposition);
if (matches != null && matches[1]) {
fileName = matches[1].replace(/['"]/g, '');
}
let blob = new Blob([res.data], { type: 'application/zip' })
const downloadUrl = URL.createObjectURL(blob)
let a = document.createElement("a");
a.href = …
Run Code Online (Sandbox Code Playgroud) 所以我有一个StringIO()
类似文件的对象,我正在尝试将其写入a ZipFile()
,但是我得到了这个TypeError:
coercing to Unicode: need string or buffer, cStringIO.StringI found
Run Code Online (Sandbox Code Playgroud)
以下是我正在使用的代码示例:
file_like = StringIO()
archive = zipfile.ZipFile(file_like, 'w', zipfile.ZIP_DEFLATED)
# my_file is a StringIO object returned by a remote file storage server.
archive.write(my_file)
Run Code Online (Sandbox Code Playgroud)
文档说这StringIO()
是一个类文件类,ZipFile()
可以接受类文件对象.有什么我想念的吗?任何帮助将不胜感激.
提前致谢!
我正在尝试使用.NET 4.5 ZipFile类和CreateFromDirectory(字符串,字符串)方法备份一些文件.我收到了UnauthorizedAccessException - Access Denied.我可以成功读取该目录中的所有文件,也可以将文件写入该目录.所以我认为权限设置正确.有关为什么我在ZipFile类上被拒绝访问的想法?
static void Main(string[] args)
{
string backupLocation = @"C:\Backups";
string directoriesToBackup = @"F:\myMedia\myPictures\Our Family\2012\Misc";
try
{
ZipFile.CreateFromDirectory(directoriesToBackup, backupLocation);
}
catch (System.UnauthorizedAccessException e)
{
Console.WriteLine(e.Message);
}
DirectoryInfo di = new DirectoryInfo(@"F:\myMedia\myPictures\Our Family\2012\Misc");
File.Create(@"F:\myMedia\myPictures\Our Family\2012\Misc\testCreateFromVs.txt");
foreach (FileInfo i in di.GetFiles())
{
Console.WriteLine(i.Name);
}
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud) 是否有一个明显更快的替代Python 2.7.4 zipfile模块(使用ZIP_DEFLATED)将大量文件压缩成单个zip文件?我看了一下czipfile https://pypi.python.org/pypi/czipfile/1.0.0,但这似乎集中在更快的解密(不压缩)上.
我经常需要处理大量的图像文件(大约12,000个.exr和.tiff文件组合的文件),每个文件大小在1MB到6MB之间(所有文件大约为9GB)到一个文件中zip文件用于发货.这种压缩处理需要大约90分钟(在Windows 7 64位上运行).
如果有人可以推荐一个不同的python模块(或者一个C/C++库甚至是一个独立的工具),它能够在比zipfile模块更短的时间内将大量文件压缩成单个.zip文件,那就是非常感谢(任何接近〜5-10%更快(或更多)的东西都会非常有帮助).
我想写一个脚本将所有'.py'文件添加到一个zip文件中.
这是我有的:
import zipfile
import os
working_folder = 'C:\\Python27\\'
files = os.listdir(working_folder)
files_py = []
for f in files:
if f[-2:] == 'py':
fff = working_folder + f
files_py.append(fff)
ZipFile = zipfile.ZipFile("zip testing.zip", "w" )
for a in files_py:
ZipFile.write(a, zipfile.ZIP_DEFLATED)
Run Code Online (Sandbox Code Playgroud)
但是它给出了一个错误:
Traceback (most recent call last):
File "C:\Python27\working.py", line 19, in <module>
ZipFile.write(str(a), zipfile.ZIP_DEFLATED)
File "C:\Python27\lib\zipfile.py", line 1121, in write
arcname = os.path.normpath(os.path.splitdrive(arcname)[1])
File "C:\Python27\lib\ntpath.py", line 125, in splitdrive
if p[1:2] == ':':
TypeError: 'int' object has no attribute …
Run Code Online (Sandbox Code Playgroud) 我正在使用python的zipfile
模块.
将zip文件放在以下路径中:
/home/user/a/b/c/test.zip
在/home/user/a/b/c/1.txt
我想要将此文件添加到现有zip的情况下创建另一个文件时,我做了:
zip.write(os.path.basename('/home/user/a/b/c/1.txt'))
在解压缩文件时,所有子文件夹都出现在路径中,如何在没有路径的子文件夹的情况下输入zip文件?
我也尝试过:
zipfile
并且得到了一个错误,该文件不存在,尽管它确实存在.
注意:我没有在路径中使用硬编码值,在本例中只是为了简化它.