Python создать папку рядом с.exe

Я использую Vizard для создания файла.exe из сценария Python. Мне нужен этот скрипт для создания папки, которая находится рядом с файлом.exe

if getattr(sys, 'frozen', False):
    logging.warning('Application is exe')
    loggingPath = os.path.dirname(sys.executable)
    logging.warning(os.getcwd())
elif __file__:
    loggingPath = os.path.dirname(__file__)
    logging.warning('Application is script')
    logging.warning(os.getcwd())

if not os.path.exists(loggingFolder):
    logging.warning('Directory not existing... creating..')
    os.makedirs(loggingFolder)

отлично работает, когда я выполняю из IDE, но в исполняемый файл он выбрасывает данные в папку Appdata в Windows/Users/Temp/randomfoldername.

Кроме того, я всегда приложение является сценарием, даже когда он упакован в EXE.

Может ли кто-нибудь указать мне правильное направление здесь? заранее спасибо

2 ответа

Модуль sys не имеет никакого атрибута frozenв результате первый оператор if всегда возвращает False,

sys.executable даст путь к двоичному интерпретатору Python, т.е. для винды путь твой python.exe файл, который я не могу понять, зачем вам это нужно.

Если вам нужно убедиться, что запущенный файл является .exe файл, затем создайте папку рядом с ним, может быть проще просто проверить, заканчивается ли имя файла .exe?

if __file__.endswith('.exe'):
    loggingFolder = os.path.join(os.path.dirname(__file__), 'foldername')
    if not os.path.exists(loggingFolder):
        os.makedirs(loggingFolder)

Если вы просто хотите создать папку во время выполнения, то другой (возможно, более простой) метод - запустить программу-мастер из пакетного файла и сначала создать папку в пакетном файле.

например create run_viz_prog.bat с таким содержанием:-

mkdir new_folder
my_viz_prog.exe
Другие вопросы по тегам