Python 无法一次下载多个csv文件,以及如何使用我编写的相同代码将文件压缩到一个csv文件中

Python 无法一次下载多个csv文件,以及如何使用我编写的相同代码将文件压缩到一个csv文件中,python,csv,download,zip,Python,Csv,Download,Zip,我有一个用python flask编写的代码,它将从csv文件中读取数据并写入csv文件。所有操作都已从UI中完成。因此,从UI中,我将从系统中选择文件,当单击“生成数据”时,它将生成数据并将新生成的数据转储到新的csv文件中,操作完成后,csv将被删除文件将自动下载到本地。 对于下载单个文件,我编写了一个代码: import pandas as pd df=pd.read_csv("test.csv") do all operation here.... ...................

我有一个用python flask编写的代码,它将从csv文件中读取数据并写入csv文件。所有操作都已从UI中完成。因此,从UI中,我将从系统中选择文件,当单击“生成数据”时,它将生成数据并将新生成的数据转储到新的csv文件中,操作完成后,csv将被删除文件将自动下载到本地。 对于下载单个文件,我编写了一个代码

import pandas as pd
df=pd.read_csv("test.csv")
do all operation here....
..........................
at last come with Generated data and store in dataframe
data = pd.DataFrame(final_Array) # "final_Array" contains the data

now performing download operation:
resp = make_response(data .to_csv(index=False,))
resp.headers["Content-Disposition"] = "attachment; filename=OutputData.csv"
resp.headers["Content-Type"] = "text/csv"
return resp
如图所示: 您可以在下面看到,csv文件的下载名称为“outputData.csv”,因此与我希望在浏览器中下载多个文件的方式相同,但我不知道如何执行此操作。 现在我有三个文件,如下所示:

data = pd.DataFrame(final_Array)
data1=result.drop(result.iloc[:,64:], axis=1)
data1.to_csv("C:\\Users\\rahul\\Desktop\\newCSVFile\\parts.csv",index=False)
data2=result.drop(result.iloc[:,8:64], axis=1)
data2=data2.drop(data2.iloc[:,19:],axis=1)
data2.to_csv("C:\\Users\\rahul\\Desktop\\newCSVFile\\Skills.csv",index=False)
data3=result.drop(result.iloc[:,8:75], axis=1)
data3.to_csv("C:\\Users\\rahul\\Desktop\\newCSVFile\\predict.csv",index=False)
return "done"
我编写了一段代码,可以一次下载多个文件:

cols.insert(0, cols.pop(cols.index('SrID')))
result = data.reindex(columns= cols)
data1=result.drop(result.iloc[:,64:], axis=1)
resp1 = make_response(data1.to_csv(index=False,))
resp1.headers["Content-Disposition"] = "attachment; filename=parts.csv"
resp1.headers["Content-Type"] = "text/csv"

data2=result.drop(result.iloc[:,8:64], axis=1)
data2=data2.drop(data2.iloc[:,19:],axis=1)
resp2 = make_response(data2.to_csv(index=False,))
resp2.headers["Content-Disposition"] = "attachment; filename=Skills.csv"
resp2.headers["Content-Type"] = "text/csv"

data3=result.drop(result.iloc[:,8:75], axis=1)
resp3 = make_response(data3.to_csv(index=False,))
resp3.headers["Content-Disposition"] = "attachment; filename=predict.csv"
resp3.headers["Content-Type"] = "text/csv"
return (resp1, resp2, resp3)

当我一次返回一个响应时,这并不适用于它的所有工作。我想一次下载所有文件…请帮助我这样做…thnx提前

您可以压缩多个文件,然后下载它…这样:

data1=result.drop(result.iloc[:,64:], axis=1)
# data1=data1.to_csv("parts.csv") 

data2=result.drop(result.iloc[:,8:64], axis=1)
data2=data2.drop(data2.iloc[:,19:],axis=1)
# data2 = data2.to_csv("Skills.csv")

data3=result.drop(result.iloc[:,8:75], axis=1)
# data3 = data3.to_csv("predict.csv")

file_List = [data1, data2, data3]
name_list = ['parts.csv', 'skills.csv','predict.csv']

def zipFiles(file_List):
    outfile = io.BytesIO() 
    with zipfile.ZipFile(outfile, 'w') as zf:
        for name, data in zip(name_list, file_List):
           zf.writestr(name, data.to_csv())
    return outfile.getvalue()
zipped_file = zipFiles(file_List)
response = make_response(zipped_file)
response.headers["Content-Type"] = "application/octet-stream"
response.headers["Content-Disposition"] = "attachment; filename=anyFileName.zip"
return response

这将把所有3个文件压缩成一个文件,并作为单个文件下载

@Jan Vlcinsky请在回答类似问题后查看我的问题,以便您能向我建议正确的方法。。thnx@davidism请告诉我正确的方法,因为你已经回答了一个类似的问题…@Martijn Pieters♦ 先生,请帮助我回答这个问题,因为您已经回答了类似的问题,所以我认为这对您来说是一个简单的建议。。thnx@jezrael请你给我建议正确的方法。任何帮助都是值得的。。。thnx@DanLoewenherz你能建议我如何使用我的zip文件代码吗我有三个文件要压缩下载到单个文件中,并将其下载到浏览器中。任何帮助都将非常有用。..thnxx'