С Python 3.4.2 на Windows, я хочу, чтобы открыть проводник с папкой в настоящее время работает сценарий, как это:Проводник не показывает папку, если началась с пути имя папки расположения файла
import os, subprocess
subprocess.check_call(['explorer', os.path.dirname(__file__)])
Вместо этого я вижу что исследователь открывает с папкой по умолчанию «C: \ Users \ XX \ Documents» и выдается ошибка:
Traceback (most recent call last):
File "C:/XXX/YYY.py", line 9, in <module>
subprocess.check_call(['explorer', os.path.dirname(__file__)])
File "C:\Python34\lib\subprocess.py", line 561, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['explorer', 'C:/XXX']' returned non-zero exit status 1
, и, хотя os.path.dirname
возвращает пути с косой черты на ОС Windows (обратные слеши путь сепаратора обеспечивают) вам может копировать и вставлять его в к исследователю, и он откроет место просто отлично. (XXX - часть пути, YYY - часть имени файла)
Кроме того, если вы вручную записываете путь, как в проводнике (с обратной косой чертой), даже тогда команда выходит из строя.
subprocess.check_call(['explorer', r'C:\Users'])
Но по крайней мере, исследователь открывает правильный каталог, несмотря на метания ту же ошибку (так что, возможно, используя call
вместо check_call
).
Что здесь происходит? Как я могу показать папку запущенного файла сценария Python в проводнике?
_ «вы проходили пустую строку» _ не согласны с сообщением об ошибке «Command» ['explorer', 'C:/XXX'] 'возвратил ненулевой выход' ... – Eric
Применение 'os.path .abspath (__ file __) 'и использование' subprocess.call' вместо 'subprocess.check_call' исправляет мою проблему. Спасибо. Однако это не потому, что путь пуст (это не так), а просто потому, что 'abspath' преобразует слэши в обратную косую черту.Даже тогда ненормальный код выхода исследователя остается, но пока он показывает правильную папку, я не буду жаловаться ... – Trilarion
@Trilarion и Eric. Вы оба абсолютно правы; Я обновил свой ответ. Я обманул себя, потому что вы получаете те же симптомы, если отправляете пустую строку. Большой немой. –