Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过双击直接用python打开自定义文件?_Python_File_Python 3.x_Exe_Cx Freeze - Fatal编程技术网

如何通过双击直接用python打开自定义文件?

如何通过双击直接用python打开自定义文件?,python,file,python-3.x,exe,cx-freeze,Python,File,Python 3.x,Exe,Cx Freeze,我在windows机器上编程,我有一个应用程序,可以读取用户选择的文件。是否允许他们在双击时直接打开文件。当程序通过cxfreeze“编译”为.exe时,这需要起作用 我真正想问的是: 是否有一种方法允许用户双击自定义文件(.lpd),当用户双击自定义文件(.lpd)时,windows启动程序(一个已编译的cxfreeze.exe)并将文件路径作为参数传递给用户。windows将文件与特定程序关联的唯一方法是通过其扩展名,因此这仅在文件具有唯一扩展名时才有效(看起来可能是这样)。因此用户需要在其

我在windows机器上编程,我有一个应用程序,可以读取用户选择的文件。是否允许他们在双击时直接打开文件。当程序通过cxfreeze“编译”为.exe时,这需要起作用

我真正想问的是:
是否有一种方法允许用户双击自定义文件(.lpd),当用户双击自定义文件(.lpd)时,windows启动程序(一个已编译的cxfreeze.exe)并将文件路径作为参数传递给用户。

windows将文件与特定程序关联的唯一方法是通过其扩展名,因此这仅在文件具有唯一扩展名时才有效(看起来可能是这样)。因此用户需要在其计算机上设置关联,这取决于Windows的版本。例如,在Windows 7中,可能通过
控制面板\All Control Panel Items\Default Programs\Set Associations


您可以在他们的系统上自动设置此关联(可能是通过编辑Windows注册表),但这通常是在安装过程中完成的,您应该先请求用户许可才能执行此操作。

我使用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()

是的,但是当assoc us设置和用户双击时,我如何获取文件路径我认为它是作为第一个(也是唯一一个)参数传递给您的程序的。因此在python中,它可能是
sys.args[1]
。我在cx\u Freeze GitHub repo中打开了一个问题,请求这样做: