1 需求
在界面软件中,用户点击下载某个文件,此时软件需要提示用户选择保存到电脑的某个位置,然后软件才能将文件保存到用户指定的电脑文件夹中。
2 代码
# 需引入的库
import os
import sys
from PyQt5.QtWidgets import QFileDialog
src = './data/skb_tmp.xlsx' # 待下载的模板文件,存放在项目中的data文件夹
fo = open(src, 'rb') # 只读 二进制 模式打开
with fo:
filedata = fo.read() # 读入内存 filedata变量
fo.close()
# 函数返回2个值:文件存放路径,文件类型
# 给用户一个默认文件名myfile.xlsx
destpath, filetype =
QFileDialog.getSaveFileName(self, "文件保存", "myfile.xlsx", "Excel工作簿 (*.xlsx)")
if destpath: # 如果获取的路径非空
fi = open(destpath, 'wb') # 写 二进制 模式创建/写入文件
with fi:
fi.write(filedata) # 写入用户电脑
fi.close()
else: # 用户点击取消后的处理,否则程序会出错退出
QMessageBox.information(self, "提示", "由于未选择保存位置,文件保存操作已取消")
此代码读写均是采用二进制方式,因此可以适用包括文本文件、音视频文件、图像文件、办公文档、压缩包等在内的一切文件。
也可以由程序指定一个默认的保存位置,只需将
myfile.xlsx
改为路径全称即可,如下
D:\myfile.xlsx
3 运行效果
对话框效果图。
用户只需点击保存或者手动选择其他文件夹。
当用户点击取消时,弹出“保存操作取消”的提示框。