我有一個調用python腳本的小CSH腳本。我試圖將一個字符串傳遞給python腳本,並創建了一個CSH腳本,但它正在打破空格,在python中使用argparse進行僞造。我需要這個CSH腳本,因爲在執行python之後,我需要使用一些遺留代碼。將字符串傳遞給csh,然後傳給python腳本中斷空間
CSH腳本:
就在python腳本調用,通過所有的行參數到Python sys.argv
#!/bin/csh
echo $argv[1-]
python soocc.py $argv[1-]
python腳本:
這個腳本需要識別像一個說法:argparse解析之前-opt "+arg1=1 +arg2=3 +arg3=0"
。因此,首先識別sys.argv
中是否有-opt
,將該字符串寫入變量中,然後從sys.argv
中刪除-opt "arg1=1 arg2=3 arg3=0"
。這樣argparse不會處理-opt
(因爲argparse將+ arg1視爲一個參數,即使它在雙引號內)。
#!usr/bin/python
# -*- coding: UTF-8 -*-
# show sys.argv list
print sys.argv
if '-opt' in sys.argv:
xipdef.opt = sys.argv[sys.argv.index('-opt') + 1] #attributes the string after "-opt" to xipdef.opt
sys.argv.remove(sys.argv[sys.argv.index('-opt') + 1]) # remove "<string>" from sys.argv
sys.argv.remove(sys.argv[sys.argv.index('-opt')]) # remove "-opt" from sys.argv
print sys.argv
問題:
soocc.csh -opt '"+arg1=1 +arg2=3 +arg3=0"'
上CSH回波返回值:
-opt "+arg1=1 +arg2=3 +arg3=0"
到目前爲止好。問題是當參數傳遞給python腳本時。第一print sys.argv
結果是:
['soocc.csh','-opt', '"+arg1=1', '+arg2=3', '+arg3=0"']
字符串雙引號中正在以空間突破的sys.argv
。我期待的是這樣的:
['soocc.csh','-opt', "+arg1=1 +arg2=3 +arg3=0"]
有人可以幫助我找到什麼是錯的?
據我所知,這*不*覆蓋「是有害的CSH編程」,爲什麼你不應該使用CSH作爲一種編程語言的優秀作文,但它可能會被添加。 – geoffspear
這不是'argparse'問題。 – hpaulj
你可以在技術上使用argparse來傳遞任意數量的「args = +」選項。 – jwillis0720