Python 个具有相关扩展名的可执行 运行 个文件

Python executable running files with associated extension

我已经用 cx_Freeze 编译了我的 python 程序

import sys
print(sys.argv[0])

获取运行我的应用程序的扩展文件的名称。 我希望能够双击名为 Foo.bas 的文件,然后我编译的可执行文件启动,它可以打开文件并读取其内容。所以我想获取扩展路径和文件名,然后像这样读取它的内容

with open(file, "r") as f:
    data = f.read()
# do things with contents

其中文件将是扩展路径和名称

那我该怎么做呢?

sys.argv[0] 为您提供用于 运行 脚本的命令的第一个条目,即脚本名称本身。如果双击扩展名与脚本或冻结应用程序关联的文件,则此文件的名称将成为命令的第二个参数,可通过 sys.argv[1] 获得。例如参见 [​​=17=].

所以尝试使用以下脚本:

import os
import sys
if len(sys.argv) > 1:
    filename = sys.argv[1]
    print('Trying with', filename)
    if os.path.isfile(filename):
        with open(filename, 'r') as f:
            data = f.read()
            # do things with contents
else:
    print('No arguments provided.')
input('Press Enter to end')

这既可以作为未冻结的脚本,也可以作为使用 cx_Freeze 冻结的可执行文件。在 Windows 上,您可以将 Foo.bas 文件拖放到脚本或可执行文件的图标上,或者右键单击 Foo.bas,选择 Open with 和 select您的脚本或可执行文件作为应用程序。