【发布时间】:2021-05-25 09:25:43
【问题描述】:
我从网站下载输出文件时遇到问题。我正在使用 Flask 上传文件、处理它们、生成输出并下载文件。
您可以在下面看到我收到的错误:
似乎我没有传递文件名,但我不确定如何修复它。 任何帮助或建议将不胜感激。
flask.py 中与此问题相关的函数
UPLOAD_FOLDER = os.path.dirname(os.path.abspath(__file__)) + '/uploads/'
@app.route('/compare_content', methods=['GET', 'POST'])
def compare():
if request.method == 'POST':
# check if the post request has the file part
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
files = request.files.getlist('file')
files = [read_xlsx_binary(file) for file in files]
df_old, df_new = files
output_filename = run_compare_dfs(UPLOAD_FOLDER, df_old, df_new)
return redirect(url_for('download_comparison', filename=request.args.get(output_filename)))
return render_template('index.html', username=session['username'])
def read_xlsx_binary(file):
filename = os.path.join(UPLOAD_FOLDER, file.filename)
file.save(filename)
df = pd.read_excel(filename, engine="openpyxl")
# os.unlink(filename)
return df
# Allow user to download the output that was generated by run_compare_dfs() function
@app.route('/uploads')
def download_comparison(filename):
return send_from_directory(UPLOAD_FOLDER, request.args.get('filename'), as_attachment=True)
比较.py
def run_compare_dfs(upload_folder, df_old=None, df_new=None):
if df_old is None or df_new is None:
path_OLD = 'old.xlsx'
path_NEW = 'new.xlsx'
df_old = pd.read_excel(path_OLD, engine="openpyxl")
df_new = pd.read_excel(path_NEW, engine="openpyxl")
final_df = compare_dfs(df_old, df_new)
output_filename = to_formatted_excel(upload_folder, final_df)
return output_filename
【问题讨论】:
-
检查
output_filename的值。 -
@OlvinRoght 我不确定我是否理解你的意思。我正在使用 2 个主要函数比较 Excel 文件,比较比较数据帧的 dfs 和创建具有丰富字符串格式的 Excel 文件的 to_formatted_excel,file_name 如下所示:file_name = upload_folder + f'/Compared_DataFrames_{str_now}.xlsx'
-
我的意思是检查函数输出。如果是
None- 这可能会导致异常。 -
现在 new.xlsx 和 old.xlsx 已正确上传到上传文件夹,但没有 Compare_DataFrames_.xlsx 文件,所以是的,你是对的