0
  import subprocess
  subprocess.Popen(['C:\Program Files\Nuke6.1v3\\Nuke6.1.exe', '-t', 'C:\Users\user\Desktop\\server.py'

我目前正在使用它来调用server.py,它是通过以下方式设置的

import sys
import os
import distutils
import shutil
import nuke

def imageScale(source,destination,scale):
    myRead = nuke.createNode("Read")
    #SET VALUES
    myRead["file"].setValue(source)
    myRead["selected"].setValue(True)
    #CREATE REFORMAT
    myReformat = nuke.createNode("Reformat")
    #SET VALUES
    myReformat["type"].setValue("scale")
    myReformat["scale"].setValue(scale)#.75)
    #SELECTION
    myRead["selected"].setValue(False)
    myReformat["selected"] .setValue(True)
    #CREATE WRITE
    myWrite = nuke.createNode("Write")

    #SET VALUES
    myWrite["file"].setValue(destination)
    myWrite["file_type"].setValue("png")
    myWrite["channels"].setValue("rgba")
    myWrite["name"].setValue("temp")
    nuke.execute("temp",1,1,1)

我是否可以使用 subprocess.popen 将参数传递给我的 imageScale 函数,即我直接从子进程传递参数源、目标和缩放

4

2 回答 2

2

简短的回答是肯定的。您想从 server.py 中的 sys.argv 读取参数。

但是,如果你知道你有一个 python 函数并且知道你会从 python 调用它,我会看看

import multiprocessing
import server

p = multiprocessing.Process(target=server.imageScale, args=(source,destination,scale))
p.start()
p.join()

除了更美观之外,您还可以在开始和加入之间自由地做其他事情。

编辑:实际上,我只是假设 Nuke 会用参数做正确的事情。不能保证它会,所以第二种策略可能也因为这个原因更好。

于 2012-07-12T19:48:52.423 回答
0

subprocess只是执行一个进程并允许使用参数和管道与新进程通信,它不能做任何其他事情。如果要实现这一点,则需要一个包装器来与父程序通信并调用该imageScale()函数。

于 2012-07-12T19:48:43.677 回答