2012-01-05 23 views
0

我正在編寫一個Python腳本來執行一些涉及運行其他幾個python腳本的管理功能。/usr/bin/python:在使用subprocess時無法在'/'中找到'__main__.py'

的我的代碼snipet看起來是這樣的:

import subprocess 

PYTHON_BIN_DIR = '/usr/bin/python' 
SCRIPTS_DIR = '/some/path' 


if __name__ == "__main__": 
    dateparam = "05-Jan-2012" 
    command = [PYTHON_BIN_DIR] 
    command.extend(SCRIPTS_DIR + "/myfile1.py") 
    strparams = " --param1={0} ".format(123) 
    command.extend(strparams) 
    command.extend(dateparam) 

    retcode = subprocess.call(command) 

    if retcode != 0: 
     # do something 
     pass 
    else: 
     # do something else 
     pass 

所有我使用的是if __name__ == ""__main__""檢查/測試調用腳本。那麼是什麼原因導致了錯誤?

+1

不應該使用'append'而不是'extend'嗎? – 2012-01-05 15:04:26

+0

@larsmans:Doh !.對我來說愚蠢的錯誤。在這裏懸在我的頭上... – 2012-01-05 15:08:19

+0

@larsmans:儘管如此,儘管正如你指出的那樣糾正了代碼已經擺脫了標題中的錯誤,但argparse模塊似乎並不認識傳遞給進程 - 我得到這個錯誤:scriptname.py:錯誤:無法識別的參數:--param1 = 123 - date = 05-Jan-2012任何想法爲什麼? – 2012-01-05 15:11:18

回答

1

正如在評論中指出的,你應該使用append而不是extend。我認爲你的另一個問題是你的論點中包含了空格。我會拆分每個參數,即--param1=123

import subprocess 
import os.path 

PYTHON_BIN_DIR = '/usr/bin/python' 
SCRIPTS_DIR = '/some/path' 


if __name__ == "__main__": 
    dateparam = "05-Jan-2012" 
    command = [PYTHON_BIN_DIR, os.path.join(SCRIPTS_DIR, 'myfile1.py'), 
       '--param1', 123, '--date', dateparam] 

    retcode = subprocess.call(command) 

    if retcode != 0: 
     # do something 
     pass 
    else: 
     # do something else 
     pass 
+0

你打敗了我。我打印出sys.argv,看到字符串有空格。問題解決了。 – 2012-01-05 15:38:55

相關問題