Я пытаюсь открыть проводник в зависимости от местоположения импортированного файла.
Код запускается, но вместо пути к файлу открывается папка «документы». subprocess.check_call(["explorer", path])
.
Но если я использую жесткий код вместо использования переменной пути, это дает мне желаемые результаты.
В обоих случаях я вижу эту ошибку
Traceback (most recent call last):
File "C:/Program Files/Nuke11.2v4/plugins\nuke\callbacks.py", line 127, in knobChanged
_doCallbacks(knobChangeds)
File "C:/Program Files/Nuke11.2v4/plugins\nuke\callbacks.py", line 46, in _doCallbacks
f[0](*f[1],**f[2])
File "C:/Users/Nandan/.nuke/python/utilities_v0.1/revealFinder_module\revealFinder.py", line 53, in reveal_finder
open_folder(path)
File "C:/Users/Nandan/.nuke/python/utilities_v0.1/revealFinder_module\revealFinder.py", line 78, in open_folder
subprocess.check_call(["explorer", path])
File "C:\Program Files\Nuke11.2v4\lib\subprocess.py", line 186, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['explorer', 'D:/Chrome-Downloads']' returned non-zero exit status 1
Мой код:
import nuke
import os
import subprocess
import sys
def add_reaveal_button():
node = nuke.thisNode()
button_reveal = nuke.PyScript_Knob("revealFinder", "Reveal In Finder ", "")
# creating a tab inside a node
tab_custom=nuke.Tab_Knob("custom", "Custom")
#create a tab and add a button to it
node.addKnob(tab_custom)
node.addKnob(button_reveal)
def reveal_finder():
"""
get file path and reveal src in finder
:return:none
"""
node = nuke.thisNode()
knob = nuke.thisKnob()
if knob.name() == "revealFinder":
path = os.path.dirname(node["file"].getValue())
if os.path.isdir(path):
print "reveal: "
print path
open_folder(path)
else:
nuke.message("cant reveal in finder. NMO such dir!")
def open_folder(path):
"""
reveal path in explorer
:param path:string path to revel explorer
:return:none
"""
#check for mac
if sys.platform == "darwin":
subprocess.check_call(["open", path])
if sys.platform == "linux2":
subprocess.check_call(["gnome-open", path])
if sys.platform == "win32":
subprocess.check_call(["explorer", path])