簡體   English   中英

在 python argparse 中使用正斜杠傳遞參數

[英]Passing argument with a forward slash in python argparse

我正在使用 argparse 獲取命令行 arguments,例如:

parser = argparse.ArgumentParser()

parser.add_argument('execCmd' , type=str)
args = parser.parse_args()

print(args)

現在,當我像這樣從命令行運行它時:

$python script.py "/bin/exec 10"

控制台上的結果是

Namespace(execCmd='C:/Program Files/usr/bin/exec 10')

它將文件路徑添加到參數中。 用戶可以使用“/”開始命令,也可以不使用。 有沒有辦法在 argeparse 中處理這個問題,如果用戶添加“/”,則命令按原樣傳遞而沒有文件目錄?

無論如何, argparse 可以接受類型的函數,你可以做一些類似檢查的事情,看看他們傳入的第一個字符是否是/或不是。

所以像:

def check_slash(string):
     if string and len(string) > 0 and string[0] == '/':
         return string
     else:
         return 'C:/Program Files/' + string

parser.add_argument('execCmd' , type=check_slash)

問題出在此處定義的 bash: https://github.com/bmatzelle/gow/issues/196

我從 git bash 運行它,因此它將 gow 路徑附加到參數中。 將參數傳遞為

$python script.py "//bin\exec 10"

有效,留下空間也是如此

$python script.py " /bin/exec 10"

如果在 powershell 中運行相同的命令,這不是問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM