2016-11-27 77 views
0

我想執行一個shell腳本,而不必在命令行本身指定任何其他參數。相反,我想對參數進行硬編碼,例如輸入文件名和文件路徑,在shell腳本中。將參數從shell腳本傳遞到Python腳本,而無需在命令行上指定參數

玩具shell腳本:

#!/bin/bash 

time python3 path/to/pyscript/graph.py \ 
    --input-file-path=path/to/file/myfile.tsv 

所以,當我運行$ ./script.sh,腳本應該通過輸入文件信息的PY腳本。

可以這樣做嗎?我總是得到錯誤「沒有這樣的目錄或文件」...

請注意,我將處理在Python腳本端使用​​的參數。

編輯

事實證明,這個問題是由什麼我已經從我的玩具腳本中省略上面,因爲我不認爲這可能是原因造成的。事實上,我有一條線被註釋掉了,這是阻止腳本運行的這條線。

玩具shell腳本完整版本:

#!/bin/bash 

time python3 path/to/pyscript/graph.py \ 
# this commented out line prevents the script from running 
    --input-file-path=path/to/file/myfile.tsv 
+0

當你從命令行運行Python腳本你得到同樣的錯誤? –

回答

2

我懷疑你的腳本是正確的,但該文件的路徑是錯誤的。也許你忘了一個主要的正斜槓。無論如何,請確保path/to/pyscript/graph.pypath/to/file/myfile.tsv是正確的。

的如何調用硬編碼參數的Python腳本從bash腳本假例如:

$ cat dummy_script.py 
import argparse 
import os 
import time 

parser = argparse.ArgumentParser() 
parser.add_argument("-i", "--input-file-path") 
args = parser.parse_args() 

if os.path.isfile(args.input_file_path): 
    print args.input_file_path, "is a file" 
    print "sleeping a second" 
    time.sleep(1) 

$ cat time_python_script.sh 
time python dummy_script.py --input-file-path=/etc/passwd 

$ /bin/bash time_python_script.sh 
/etc/passwd is a file 
sleeping a second 

real 0m1.047s 
user 0m0.028s 
sys 0m0.016s 
相關問題