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

时间:2019-02-12 03:28:00

标签: python executable file-handling cx-freeze file-association

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

import sys
print(sys.argv[0])

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

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

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

那我该怎么办?

1 个答案:

答案 0 :(得分:1)

sys.argv[0]为您提供了用于运行脚本的命令的第一项,即脚本名称本身。如果双击扩展名与脚本或冻结的应用程序相关联的文件,则该文件的名称将成为命令的第二个参数,可通过sys.argv[1]获得该文件。例如,请参见sys.argv[1] meaning in 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,然后选择脚本或可执行文件作为应用程序。 / p>