2013-04-05 54 views
0

我試圖運行通過命令行或解釋器中使用Python文件:的Python:類型錯誤運行腳本時,而不是在解釋

import sys 
import subprocess 
subprocess.call([sys.executable, "file.py", "arg1", "arg2", "arg3"]) 

但是程序返回一個類型錯誤:「不能concatenante「海峽'和'numpy.float64'對象「。

我不明白的是,當我在解釋器中逐行運行程序時,沒有這樣的錯誤,一切都很好。

我不知道從哪裏開始調試,但我懷疑它可能與我的設置有關。

我有一個64位版本的Python和32位版本的Python安裝在Windows 7中。Python的兩個版本都是2.7。 (這是由於使用了一些只能用於32位的模塊 - 因此上述程序正在32位版本中運行)。環境路徑變量已被編輯爲僅使用32位版本。

我不確定哪些其他信息是相關的,但請讓我知道,我會把它挖出來。

基本上我只是希望能夠從命令運行程序:

python program.py arg1 arg2 arg3 

任何幫助是極大的讚賞

+0

爲什麼不直接運行'python file.py arg1 arg2 arg3'? – fgb 2013-04-05 01:39:00

回答

3

你最有可能將該參數傳遞到你的函數沒有從他們的字符串將它們轉換表示法 - 當您在解釋器中測試代碼併爲其提供數字時,所有內容當然都會按預期工作。 如果你正在做這樣的事情:

# Wild guess at what your code actually looks like 

if __name__ == "__main__": 
    # main_function(23.1, 44.9, 12.21) # This works when uncommented ... why? 
    main_function(sys.argv[1], sys.argv[2], sys.argv[3]) # This breaks ... why? 

後來才知​​道,當你撥打:

python program.py 23.1 44.9 12.21 

你真的叫main_function下列要求:

main_function("23.1", "44.9", "12.21") 

你需要使用float類型的構造函數將參數顯式轉換爲浮點數。

+0

哦,當然是!天哪,這實際上是一個相當愚蠢的問題。非常感謝您的幫助。 – user2244789 2013-04-05 03:44:30

相關問題