Исполняемые файлы Python со связанным расширением - PullRequest
0 голосов
/ 12 февраля 2019

Я скомпилировал мою программу на Python с cx_Freeze со строками

import sys
print(sys.argv[0])

, чтобы получить имя файла расширения, который запускает мое приложение.Я хочу иметь возможность дважды щелкнуть файл с именем Foo.bas, и тогда мой скомпилированный исполняемый файл запускается, и он может открыть файл и прочитать его содержимое.Поэтому я хочу получить путь к расширению и имя файла и прочитать его содержимое следующим образом:

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

, где файл - это путь и имя расширения

Так как мне это сделать?

1 Ответ

0 голосов
/ 12 февраля 2019

sys.argv[0] дает вам первую запись команды, используемой для запуска вашего скрипта, которая является самим именем скрипта.Если дважды щелкнуть файл, расширение которого связано с вашим сценарием или замороженным приложением, имя этого файла становится вторым аргументом команды, доступным через sys.argv[1].См., Например, sys.argv [1], что означает в сценарии .

Так что попробуйте следующий скрипт:

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 и выбрать свой скрипт или исполняемый файл в качестве приложения.

...