我有一个算法可以输出一个元组列表,该列表已准备好写入 csv 文件。
我正在尝试写入 3 个 csv 文件(通过 StringIO,因此不写入磁盘),然后将它们完全压缩。之后,我想将其附加到 django 请求的响应中。
我不确定这样做的最有效方法是什么。我应该StringIO用来通过我的算法存储 3 个调用吗?在压缩它们之前,我应该先创建 csv 文件吗?我可以直接使用 1 zipfilecall 而不需要调用 3 StringIOs的中间步骤吗?
谢谢
我正在使用一个 Flask 应用程序,该应用程序从 Web 服务器的文件夹中获取多个文件,并创建一个包含这些文件的 zip 文件,最终将该 zip 文件发送给用户。我的问题是我无法在发送后从 Web 服务器中删除 zip 文件。
我尝试使用@after_this_request命令解决问题。
在这里,我展示了我编写的代码的简化版本。我发送了之前创建的 zip 文件,然后尝试删除它。
@app.route('/sendFile')
def sendFile():
@after_this_request
def removeFile(response):
os.remove(zip_path)
return response
return send_from_directory(path, filename=zipname, as_attachment=True)
Run Code Online (Sandbox Code Playgroud)
问题是引发了一个错误,指出无法删除 zip 文件,因为它仍在被其他进程使用。我在其他类型的文件中看到过类似的问题:
但是,在我使用 zip 文件的情况下,它们不起作用。
我正在尝试从Web2Py表单上传一个zip文件,然后阅读内容:
form = FORM(TABLE(
TR(TD('Upload File:', INPUT(_type='file',
_name='myfile',
id='myfile',
requires=IS_NOT_EMPTY()))),
TR(TD(INPUT(_type='submit',_value='Submit')))
))
if form.accepts(request.vars):
data=StringIO.StringIO(request.vars.myfile)
import zipfile
zfile=zipfile.Zipfile(data)
Run Code Online (Sandbox Code Playgroud)
由于某些原因,虽然上传的文件是zip文件,但此代码确实有效并且抱怨文件不是zip文件.
我是新来的Web2Py.如何data表示为zip文件?
我已尝试过多种方法在Java/Groovy中创建此zip文件.我尝试的前几种方法,来自各种博客/帖子,导致无法打开的损坏的zip文件.所以,我试过这个(下面)看起来相当有前途.sysouts报告传递给FileInputStream的有效文件路径.我不确定是否是传递给ZipOutputStream的FQ路径导致了问题.无论哪种方式,下面是代码,这导致创建小(188kb)zip文件(没有条目).有什么建议?
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Set;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
class FileZipper {
public static void makeZip(Set fullyQualifiedFileNames, String zipFileName, String outDir) throws IOException, FileNotFoundException
{
// These are the files to include in the ZIP file
Object[] filenames = fullyQualifiedFileNames.toArray();
String fileSeparator = (String) System.getProperties().get("file.separator");
// Create a buffer for reading the files
byte[] buf = new byte[1024];
// Create the ZIP file
String outFilename = outDir + fileSeparator +zipFileName;
FileOutputStream fos = new …Run Code Online (Sandbox Code Playgroud) 据我了解,状态是归档加密包含通用位标志.我尝试用ZipArchive :: statname()来检查这个,但似乎无法通过此方法获取信息.
我还能做什么?阅读存档并解析标题?我知道我可以调用system(),但我不想使用这种方法,因为它的特殊性(某些托管此函数被禁用).
好的,这是基本的,但似乎正常的方法对我不起作用。
我正在尝试导入 jSSC 库,用于与串行端口等通信。最新的库是 jSSC-0.9.0-Release
所以,我尝试了以下方法:
然后我尝试包含库中的内容:
import jssc.SerialPortList;
Run Code Online (Sandbox Code Playgroud)
错误:无法解析导入jssc
结果:同样的错误。
对于导入库的简单操作,我在这里缺少什么基本信息/操作?
我有以下angularjs代码:
$scope.search = function() {
creatorService.search($scope.model).then(function(data) {
saveAs(new Blob([data], { type: "application/octet-stream'" }), 'testfile.zip');
});
};
Run Code Online (Sandbox Code Playgroud)
(也使用fileSaver.js)
然后在我的webapi2方面采用以下方法:
public HttpResponseMessage Post(Object parameters)
{
var streamContent = new PushStreamContent((outputStream, httpContext, transportContent) =>
{
try
{
using (var zip = new ZipFile())
{
zip.AddEntry("test.txt", "test data");
zip.Save(outputStream);
}
}
finally
{
outputStream.Close();
}
});
streamContent.Headers.ContentType = new MediaTypeHeaderValue("application/zip");
streamContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "test.zip"
};
var response = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = streamContent
};
return response;
} …Run Code Online (Sandbox Code Playgroud) 我有一个具有Unicode名称的文件,比方说'????.txt'.我想打包他,我正在使用python的zipfile.
我可以压缩文件并稍后打开它们,但是当使用Windows 7文件浏览器查看文件时,文件名会搞乱(7zip工作得很好).
根据文档,这是一个常见的问题,并且有如何处理的说明:
来自ZipFile.write
注意
ZIP文件没有正式的文件名编码.如果您有unicode文件名,则必须将它们转换为所需编码的字节字符串,然后再将它们传递给write().WinZip将所有文件名解释为CP437中编码的文件名,也称为DOS Latin.
对不起,但我似乎无法得到我应该用文件名做什么.我试过.encode('CP437'),.decode('CP437')..
我正在使用ZipFile.CreateFromDirectory方法在C#中压缩目录:
private void createZIP()
{
string startPath = @"c:\example\start";
string zipPath = @"c:\example\result.zip";
ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, true);
}
Run Code Online (Sandbox Code Playgroud)
它一般都在工作,但我只想要zip文件中/ start /文件夹的内容,而不是目录本身.
现在:
result.zip
--start
---- file1.txt
---- file2.txt
Run Code Online (Sandbox Code Playgroud)
我多么想要:
result.zip
-- file1.txt
-- file2.txt
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有一个 REST API 端点,它在 .Net Core 1.1 上接收 zip 文件。我从这样的请求中获取 IFormFile
var zipFile = HttpContext.Request.Form.Files.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
然后我需要将它传递给不支持 IFormFile 的 .Net Standard 1.5 中的 service 方法。
所以问题是:如何将 IFormFile 转换为 ZipFile 或标准 1.5 支持的其他类型,或者可能有一些更合适的方法来操作 zip 文件?谢谢!
在工作中,我正在实现一个可处理文件的新Web服务。规范说,如果压缩了.zip文件,我们将不接受。
是否存在未压缩的.zip文件?如果是的话,您认为使用Java(1.8)检测一个的最佳方法是什么?