2015-12-14 3 views
0

Я пишу метод, чтобы открыть путь в окне проводника на Mac. Итак, я использую метод getstatusoutput для модуля команд в python. У меня есть следующий фрагмент кода:getstatusoutput в python, возвращающем неверный результат

Path = "file:///" + USERHOME 
filePath = os.path.join(Path, filePath) 

ret, out = commands.getstatusoutput('open "%s"' % filePath) 

Этот метод работает для большинства файлов/папок, кроме одного имени, как «старый,; {} &». В этом случае он работает, если я не ставил «файл: ///» перед фактическим Путем, как указано выше. Я не понимал, почему это происходит. Может ли кто-нибудь указать, что мне здесь не хватает?

ответ

0

Если вы используете версию 2.7+, не используйте модуль команд. Он устарел и заменен subprocess module.

Во-вторых, не используйте файл: /// префикс. Используйте флаг -R, чтобы открыть его, чтобы открыть его в Finder. С открытым справочником:

-R Открывает файл (ы) в Finder вместо его открытия.

Пример:

import subprocess 
subprocess.Popen(["open", "-R", "/path/to/myfile/old,;'{}&"]) 
+0

Но на самом деле мне нужно открыть файл в любом случае из моего приложения, когда пользователь нажимает на ссылку на файл. Итак, я использовал метод getstatusoutput. Я проверил с помощью метода subprocess.call(), как вы говорили, но все же столкнулся с проблемой, чтобы открыть файл. Итак, это проблема из-за ';' в имени файла? –

+0

Я добавил пример моего ответа. Когда я запускаю это в оболочке ipython, Finder открывается, и файл выбирается. В противном случае вам нужно предоставить более подробную информацию о том, что именно вы хотите. –