2013-09-25 84 views
0

我正嘗試從自己調用.jar的終端調用python腳本。請注意,這個java程序需要一個參數(一個字符串)並且寫入一個.txt文件和這個字符串的內容。無法將sys.argv [0]傳遞給subprocess.call

我嘗試去(在test.py):

#!/usr/bin/python 

import sys 
import subprocess 

subprocess.call(['java','-jar',sys.argv[0],sys.argv[1]]) 

,然後在終端中輸入:

python test.py test.jar Hello 

但是,我得到的錯誤Invalid or corrupt jarfile test.jar。有趣的是下面的工作:

#!/usr/bin/python 

import sys 
import subprocess 

subprocess.call(['java','-jar','test.jar',sys.argv[0]]) 

其次:

python test.py Hello 

回答

3

sys.argv[0]實際上是你的Python文件的名稱,因爲它是你python後給第一個參數。因此,在您的電話中,您希望使用sys.argv[1]sys.argv[2]

test.py

import sys 
print(sys.argv[0]) 

運行test.py

[email protected] ~ python test.py 
# Output 
test.py