2015-09-04 150 views
0

我one.py如何從另一個腳本運行python腳本時獲得正確的exitcode?

import sys 
sys.exit(-23) 

文件,當我從另一個文件同時使用

ans = subprocess.call("python c:\python27\one.py") 
        or 
ans = os.system("python c:\python27\one.py") 

它返回我值「2」,我希望值-23調用它。

我們該怎麼做?

編輯:有人標誌着另一個問題這是可能重複的..這是一個bash腳本,但實際上這個問題是關係到蟒蛇,它是如何在那裏工作的exitcodes來電..如何運行另一個python腳本有很多答案但沒有人討論退出代碼在一個.. INFACT我搜索正確問問題

+0

可能重複[爲什麼我的bash函數返回錯誤的值?](http://stackoverflow.com/questions/3394930/why-does-my-bash-function-return-the-wrong-value) – tripleee

+0

@tripleee閱讀這個問題......它是關於python的... – niyant

+0

不,這是關於底層平臺支持的退出代碼。 – tripleee

回答

1

在此之前,一個你有2個問題

1)您使用負的退出代碼,而他們並不總是可能的。你可能會得到233作爲退出代碼(退出代碼被視爲一個無符號字節,因此它可以在0 - 255之間)

2)當你運行這個,你會得到一個錯誤,因爲你試圖運行它在殼形式,你可以用

ans = subprocess.call(['python',r"c:\python27\one.py"]) # This r before addr. is important.. else you will still get the same value 

或更少的推薦方式殼這項工作= True參數這樣

ans = subprocess.call(r"python c:\python27\one.py", shell=True) 

但不建議,因爲安全問題(如果用戶輸入可以影響你的命令)

+0

它仍然給我的價值2兩種方式嘗試 – niyant

+0

我把這個值放在sys.exit(12)像這樣,但仍然回答是2只有 – niyant

+1

也許你需要把r「c:\ python27 \ one.py」(在開始處添加ar),因爲字符串包含\。如果這沒有幫助,然後檢查當你從cmd運行它時會發生什麼,比如「python c:\ pyhon27 \ one.py」 – DorElias

相關問題