2015-09-22 50 views
-1

我有用幾個參數調用的Python腳本。 我也可以用不同的參數集來調用它以表現不同。調用自己的Python腳本

我的問題是:是否有可能在腳本中,當我用第二組參數調用它時,我添加了代碼,以便腳本使用第一組參數調用它自己?那會工作嗎?

上述原因: 使用參數集1調用腳本時,腳本會構建一個C庫。 當使用參數集2調用腳本時,腳本運行從arg集1創建的dll。 但是,我發現運行參數集2還需要其中一個C文件(構建dll)具有絕對路徑(它具有相對)。運行帶有參數2的python腳本,我暫時將C文件相對於絕對路徑更改爲 並運行,但這意味着腳本與dll不同步。所以,我需要用第二組參數調用腳本,在這個代碼中,這將再次調用相同的腳本,第一組參數構建dll,然後繼續。
感謝
sedy

+0

當然,只需檢查參數並做相應的操作。但爲什麼你想創建一個新的過程?你不能在腳本中調用另一個函數嗎? – multivac

+0

當您想知道哪些參數(並且沒有)傳入函數時,命名或可選參數會很有幫助。 http://www.diveintopython.net/power_of_introspection/optional_arguments.html – ziddarth

回答

1

退房的subprocess module

from subprocess import call 
if arg2: 
    call(["python", "myscript.py", "--arg1"]) 
+0

作品像一個魅力...謝謝 – user915783

0

變化argumemts會對功能,其作爲 任何指令同樣沒有副作用。

它應該工作。它比你害怕的要容易得多。現在就做,它的樂趣。

的*下一成參數的意思是「取給定參數的休息和 把它們放在一個列表稱爲參數」。

def wrapper(func, *args): 
    func(*args) 

def func1(x): 
    print(x) 

def func2(x, y, z): 
    print x+y+z 

wrapper(func1, 1) 
wrapper(func2, 1, 2, 3)