有没有办法将 python 脚本设置为打开某种文件的程序?

Is there a way to set a python script as program to open a type of file?

问题:

我目前正在研究一种编程语言,它使用简单的 python 解释器。解释器用一堆 if 语句遍历每一行。 我想使用的文件扩展名是 .ccp。 到目前为止我的进步。我想让电脑把.ccp个文件识别成CalcScript个文件,然后用脚本打开。

我不想使用可以使用 text = open("filename.idk","r").read() 打开的默认文件名,我想打开一个类似 'normal' 的文件。您在资源管理器中双击该文件,它会在 python 脚本中打开它。不管文件名是什么。

我试过的:

  1. 修改设置中的默认应用程序
  2. 修改注册表
  3. 正在将我的 .py 文件转换为 .exe
  4. 搜索互联网

我的代码:

https://github.com/AnonymousPixel/CalcScript

抱歉英语不好,如果有的话。

总结一下我对这个问题的评论,您可以按照以下步骤来实现您的要求:

  1. 使用sys.argv访问命令行参数。例如下面的脚本将只打印给它的所有参数:
import sys

print("Given arguments: ", str(sys.argv))

我们将其命名为myprogram.py

然后您可以调用它(我认为):python myprogram.py arg1 arg2 arg3 它会 运行 并打印命令行参数。

请注意第一个参数 (sys.argv[0]) 是脚本的路径。所以 arg1 会是 sys.argv[1]arg2 会是 sys.argv[2] 等等。

我说要使用 sys.argv,因为据我所知,双击带有默认打开程序的扩展名的文件,将打开该程序,文件路径作为参数。

  1. 下一步是将您的 python 脚本打包成可执行文件。这已经被问过并回答过,例如 here(这是重复的,您可以在其中按照之前的问题查看更多示例)。我使用 PyInstaller 对其进行了测试(并在 Windows OS 上)。我的命令是这样的:
pyinstaller myprogram.py

... 它生成了一些文件夹和文件。具体来说,文件夹 dist\myprogram 包含可执行文件及其依赖项。然后,您可以通过在 dist\myprogram 文件夹中双击它来 运行 您的程序。它应该弹出一个 CLI window,打印参数(即只有程序的路径,因为我们调用它没有任何其他)并立即退出。或者您可以使用如下命令打开 CLI window 和 运行:

myprogram argument1 argument2 argumentN

(假设您当前的工作目录是 dist\myprogram)它确实会打印参数。

  1. 最后,您必须将其设置为默认打开扩展名为 .ccp 的文件的程序。在 Windows 10,您可以通过以下方式执行此操作:

    1. 打开文件资源管理器
    2. 查找扩展名为 .ccp 的文件(或创建一个)。
    3. 右击它。
    4. 在弹出的对话框中单击属性
    5. 转到弹出对话框中的常规 选项卡(如果您尚未在该选项卡)。
    6. 打开方式:部分有一个按钮显示更改。点击它。
    7. Select 对话框底部的更多应用程序
    8. 确保选中始终使用此应用程序打开 .ccp 文件复选框。
    9. 滚动到对话框底部并单击提示手动选择默认应用程序的蓝色文本,这会弹出一个文件选择器。我不是 运行 会英语,所以要准确翻译它有点困难(我关注了一些在线页面,实际上看到了前面步骤的默认翻译)。
    10. Select 您的可执行文件作为默认值。
    11. 通过选择确定应用或任何其他要求来确认您的选择。

然后我想您以后也可以通过以下方式更改此扩展名:

Settings --> Apps --> Default Apps --> Choose default apps by file type.

一些参考资料:

  1. PyInstaller website and introductory manual.
  2. Official page for step 3.
  3. Unofficial page for step 3, a lot more detailed.