首页 > 解决方案 > 具有关联扩展名的 Python 可执行运行文件

问题描述

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

import sys
print(sys.argv[0])

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

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

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

那我该怎么做呢?

标签: pythonexecutablefile-handlingcx-freezefile-association

解决方案


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

所以尝试使用以下脚本:

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并选择您的脚本或可执行文件作为应用程序。


推荐阅读