如何双击直接用python打开自定义文件?
Posted
技术标签:
【中文标题】如何双击直接用python打开自定义文件?【英文标题】:How can I directly open a custom file with python on a double click? 【发布时间】:2014-03-17 13:16:06 【问题描述】:我在 Windows 机器上编程,我有一个应用程序可以读取用户选择的文件。是否可以让他们在双击时直接打开文件。当程序使用 cxfreeze “编译”为 .exe 时,这需要工作。
我真正要问的是: 有没有办法让用户双击自定义文件(.lpd),当他们这样做时,windows 会启动程序(编译的 cxfreeze .exe)并将文件路径作为参数传递给它。
【问题讨论】:
我在 cx_Freeze GitHub 存储库中打开了一个请求此问题的问题:Documentation on how to make a file association in MSI for Windows · Issue #274 · anthony-tuininga/cx_Freeze 【参考方案1】:Windows 将文件与特定程序关联的唯一方法是通过它们的扩展名,所以这仅在您的文件具有唯一扩展名时才有效(看起来可能是这样)。因此,您的用户需要在他们的机器上设置关联,这取决于 Windows 的版本。例如,在 Windows 7 中,它可能会通过Control Panel\All Control Panel Items\Default Programs\Set Associations
。
您可以在他们的系统上自动设置此关联(可能通过编辑 Windows 注册表),但这通常会在安装过程中完成,您应该先征得用户的许可。
【讨论】:
是的,但是当我们设置 assoc 并且用户双击时,我如何获取文件路径 我相信它是作为第一个(也是唯一一个)参数传递给您的程序的。所以在python中,它可能是sys.args[1]
。【参考方案2】:
我使用 PyInstaller 生成 exe。 这是一个小例子:
import sys
class Test():
def __init__(self, path=None):
super().__init__()
self.path = path
def start(self):
if self.path == None:
pass
else:
print(self.path)
if __name__ == '__main__':
if len(sys.argv) > 1 :
mytest = Test(sys.argv[1])
else:
mytest = Test()
mytest.start()
【讨论】:
以上是关于如何双击直接用python打开自定义文件?的主要内容,如果未能解决你的问题,请参考以下文章
vscode如何配置debug,python正则表达式如何匹配括号,关于python如何导入自定义模块