2016-09-07 1 views
0

Недавно я создал скрипт python, который проходит через файлы в любом каталоге, в котором он размещен, и переименовывает их на основе определенных критериев. Скрипт отлично работает, и я скомпилировал скрипт в OS X.app, используя py2app. Это отлично работает. Однако теперь, когда я запускаю скрипт, он ищет файлы в папке «.app/contents/macOS» (где находится скрипт), а не где «.app» фактически находится.Как найти каталог .app, который работает с скриптом python от

Это потому, что он имеет этот код на старте:

src = os.path.dirname(os.path.abspath(__file__)) 

, который назначает местоположение «.py» файла в переменную, которая затем используется широко во всем сценарии. Есть ли способ, которым я могу вместо этого добавить фрагмент кода, который сообщает python о местоположении пути «.app», из которого выполняется файл «.py»?

Если нет, возможно, есть способ открыть окно проводника файлов, оттуда пользователь сможет выбрать папку, путь которой затем будет присвоен переменной «src». Однако я очень новичок в python, так что это, безусловно, будет проблемой.

ответ

0

Попробуйте использовать:

import os 
print(os.getcwd()) 

Из документации:

getcwd()

Вернуть юникод строку, представляющую текущий рабочий каталог.

+0

@thanks для ответа очень оценено, к сожалению, это не работает, и возникает одна и та же проблема. Думаю, мне нужно будет использовать tkinter, чтобы побудить пользователя выбрать каталог. Будет добавлен код, когда я закончу – Ruthus99

+0

@ Ruthus99 уверен. – turkus

0

Чтобы найти расположение каталога .app, который обертывает приложение, самый прямой способ - изменить путь, который вы найдете в текущем коде. После вычисления src, как вы делали, просто обрезать его, как это и использовать app в качестве пути:

import re 
... 
app, rest = re.split(r"/[^/]*\.app/", src, 1) 

Это останавливается на первом компоненте пути, который заканчивается в .app. Если вы предпочитаете, вы можете запрограммировать свое имя приложения, например. /myprogram.app/.

PS. Я озадачен тем, почему вы копируете приложение в папку, которую хотите изменить. Диалог выбора файла или перетаскивание - это более общий (и более простой) способ сообщить программе, над чем работать. OS X приложений, созданных с поддержкой py2app перетаскивания: Ваша программа может получить путь к выпавшему директории, как это:

import sys 
folders = sys.argv[1:] # Handles multiple arguments 
for folder in folders: 
    do_something_in(folder) 

Тогда просто перетащить папку или папки, которые вы хотите обработать на иконку приложения, которые вы можете просто оставить свой рабочий стол, боковую панель Finder или любимый каталог - не нужно копировать его каждый раз, когда вы его используете, и не нужно знать, где находится его источник.

Смежные вопросы