Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.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_Windows_File - Fatal编程技术网

将Python脚本设置为打开文件类型的默认值

将Python脚本设置为打开文件类型的默认值,python,windows,file,Python,Windows,File,我试图将我的Python脚本设置为打开文件的默认程序,例如,双击程序时,用程序打开每个.txt文件。 我已经试过了: 从系统导入argv 将参数写入文件以进行调试 使用openoutput.txt,w+作为f: f、 写入程序 我使用pyinstaller将脚本转换为.exe,否则Windows将不允许我使用它打开文件 在命令提示符下,它可以工作:键入main.exe某些参数确实会生成一个output.txt文件,其中包含[C:\…\main.exe,some,args] 我希望通过在“文件资源

我试图将我的Python脚本设置为打开文件的默认程序,例如,双击程序时,用程序打开每个.txt文件。 我已经试过了:

从系统导入argv 将参数写入文件以进行调试 使用openoutput.txt,w+作为f: f、 写入程序 我使用pyinstaller将脚本转换为.exe,否则Windows将不允许我使用它打开文件

在命令提示符下,它可以工作:键入main.exe某些参数确实会生成一个output.txt文件,其中包含[C:\…\main.exe,some,args]

我希望通过在“文件资源管理器”>“右键单击文件”>“打开方式”>“更多应用程序”>“检查始终使用此应用程序”中使用此脚本打开一个.txt文件并选择可执行文件,这与在命令提示符下运行main.exe C:\…\即\u文件\u即\u刚刚\u单击.txt相同,然后我可以使用文件路径在我的程序中打开它。然而,这并没有发生。事实上,main.exe甚至从未执行过,因为它甚至没有创建新的output.txt


如何链接pyinstaller生成的可执行文件以始终打开文件类型,以及如何知道Python中打开的文件的路径?

我做错的事情是使用相对文件路径创建output.txt。由于脚本被转换成一个.exe,它基本上将解释器和脚本包装成一个文件,因此相对文件路径停止工作


使用绝对文件路径修复了Eryk Sun指出的我的问题。

自动生成的progid的打开操作应该包括%1文件路径,但如果需要,它不会包括额外的%*命令行参数。您的测试脚本依赖于工作目录,我不确定PyInstaller可执行文件的工作目录是什么。它应该是目标文件的目录,但请尝试在脚本中硬编码的完全限定位置写入output.txt,并包含os.getcwd的值。@ErykSun将所有内容转换为绝对文件路径似乎已经修复了它。打开的文件路径现在显示在output.txt中。谢谢我怎样才能把你的答案标记为正确?