pyqt/pyside 使用指定应用/软件打开指定文件
windows平台的处理
mac平台的虽然有写但未测试,不确定是否可用。linux平台未写。
windows思路:
1. 获取要打开的文件的绝对路径,我们以pdf文件为例
2. 首先定位到可执行程序(exe,msi)所在的位置,然后切换工作目录至可执行程序所在的位置。
3. 执行命令xxxxxx.exe D:\path\to\cccccc.pdf
mac思路:
1. open -a 软件路径 pdf文件路径
2. 使用python实现本命令
linux思路:
1. desktop文件
2. 看看文档
代码
def openscorepdf(self):
# 使用dialog获取文件路径
self.scorepdfpath, _ = QFileDialog.getOpenFileName(self, "选择你要上传的pdf文件", r"C:\\", "文件类型 (*.pdf)")
# 如果路径不存在
if not self.scorepdfpath:
QMessageBox.warning(self, '没有文件', '您并未选择任何pdf文件')
else:
# 提示信息
QMessageBox.information(self, '提示', '请选择你希望打开pdf文件的应用')
# 判断平台是否是Windows
if str(sys.platform) == 'win32' or str(sys.platform) == 'win64':
# 选择打开文件要使用的软件
openway, _ = QFileDialog.getOpenFileName(self, "请选择应用", r"C:\\", "(*.exe *.msi)")
# windows处理方式
path1 = os.path.dirname(os.path.abspath(openway))
# 切换工作目录至exe程序所在目录
os.chdir(path1)
# 获取软件的名字
path2 = str(openway).split('/')[-1]
# 拼接命令,类似于:wps.exe D:\\path\to\aaa.pdf
openorder = path2 + ' ' + str(self.scorepdfpath)
# 执行上面一行代码表示的命令
os.system(openorder)
# mac处理方式,这部分未测试,直觉告诉我肯定有问题O(∩_∩)O哈哈~,大伙自己改改,linux平台的处理代码未写,有时间了再搞。
else:
openway, _ = QFileDialog.getOpenFileName(self, "请选择应用", r"C:\\", "(*)")
# 有没有sudo的区别在于要使用的软件是否需要root权限
# openorder = 'sudo open -a ' + str(openway) + ' ' + str(self.scorepdfpath)
openorder = 'open -a ' + str(openway) + ' ' + str(self.scorepdfpath)
os.system(openorder)
# # 方式二
# openway, _ = QFileDialog.getOpenFileName(self, "请选择应用", r"C:\\", "(*)")
# # # 开始到结束的这段内容,先注释掉,如果程序有问题,那个去掉注释,并且把最后一行(也就是结束后面的那行)注释掉
# # # 开始
# # path2 = str(openway).split('/')[-1]
# # proname = path2.split('.')[0]
# # subprocess.call(['open', '-a', proname, self.scorepdfpath])
# # # 结束