2013-02-27 118 views
1

我正在使用名爲Foundry Nuke的軟件。我在Mac OSX中傳遞命令行參數時遇到麻煩。命令行參數Mac OSX

如果我使用下面的命令,它工作正常,並啓動Nuke軟件。

subprocess.Popen(['Application/Nuke6.3v8/Nuke6.3v8.app/Contents/MacOS/Nuke6.3v8'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) 

但是,如果我添加參數的命令,它不起作用。 subprocess.Popen(['Application/Nuke6.3v8/Nuke6.3v8.app/Contents/MacOS/Nuke6.3v8', '-t /.../somepath/init.py', '%s %s' % (someArg1, someArg2)], stdin=subprocess.PIPE, stdout=subprocess.PIPE)

好心幫忙。

在此先感謝

+0

你是什麼意思的「不工作」? – Blender 2013-02-27 05:14:54

回答

0

要添加參數,添加額外的項目清單:

subprocess.Popen([ 
    'Application/Nuke6.3v8/Nuke6.3v8.app/Contents/MacOS/Nuke6.3v8', 
    '-t', '/.../somepath/init.py', 
    some_arg_1, some_arg_2, 
], stdin=subprocess.PIPE, stdout=subprocess.PIPE) 
1

每個人的說法需要在列表中的一個單獨的項目。

subprocess.Popen(['Application/Nuke6.3v8/Nuke6.3v8.app/Contents/MacOS/Nuke6.3v8', 
        '-t', '/.../somepath/init.py', # not '-t /.../somepath/init.py' 
        someArg1, someArg2,   # not '%s %s'%(someArg1, someArg2)' 
       ], stdin=subprocess.PIPE, stdout=subprocess.PIPE) 
+0

謝謝....如果我有一個列表作爲參數,* someArgList不起作用。 – NarayaN 2013-02-27 07:17:41

+0

只能使用帶星號的表達式作爲函數參數列表的一部分,而不能在任意列表中使用。你可以使用'['Application ...','-t','/.../somepath/init.py'] + list(someArglist)''。 – chepner 2013-02-27 13:54:13