第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

當(dāng)用 -c 調(diào)用蟒蛇時(shí)

當(dāng)用 -c 調(diào)用蟒蛇時(shí)

米琪卡哇伊 2022-09-13 19:13:36
請(qǐng)考慮以下短的 python (3.8) 代碼段:import subprocessdef call_subprocess_command(*command: str):    with subprocess.Popen(args=command, stdout=subprocess.PIPE, text=True) as process:        for line in iter(process.stdout.readline, ""):            print(line)call_subprocess_command("python", "-c", "import sys; print(sys.argv)", "--test", "foo")這將打印 .我希望它只打印。['-c', '--test', 'foo']['--test', 'foo']我需要這個(gè),因?yàn)槲艺趧?dòng)態(tài)計(jì)算要在 docker 容器內(nèi)運(yùn)行的命令。但是,調(diào)用的代碼的 cli 解析器總是中斷,因?yàn)樗邮盏健?c”參數(shù),它不知道如何處理該參數(shù):call_subprocess_command("python", "-c", "import argparse; parser=argparse.ArgumentParser(); parser.add_argument('test'); print(parser.parse_args())", "--test", "foo")這導(dǎo)致用法被打印到 stderr,并且它將“-c”解析為“test”的值:usage: -c [-h] test-c: error: unrecognized arguments: --test我目前的解決方法是使用僅關(guān)鍵字參數(shù)(“--test”),但如果可能的話,我真的很想去掉那個(gè)“-c”。call_subprocess_command("python", "-c", "import argparse; parser=argparse.ArgumentParser(); parser.add_argument('--test'); print(parser.parse_args())", "--test", "foo")這導(dǎo)致我想要的:Namespace(test='foo')我不太明白為什么這有效,因?yàn)樗F(xiàn)在似乎忽略了“-c”。如果我添加另一個(gè)它不知道的參數(shù),例如“--bar”,它會(huì)再次崩潰,即使“-c”也是一個(gè)它不知道的參數(shù):call_subprocess_command("python", "-c", "import argparse; parser=argparse.ArgumentParser(); parser.add_argument('--test'); print(parser.parse_args())", "--test", "foo", "--bar")usage: -c [-h] [--test TEST]-c: error: unrecognized arguments: --bar所以我的問題是:如何擺脫子進(jìn)程中存在的“-c”參數(shù)?sys.argv為什么阿格帕西有時(shí)可以忽略“-c”,有時(shí)不能?
查看完整描述

1 回答

?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

如注釋中所述,用作 和 解析 。argparsesys.argv[0]progsys.argv[1:]


如果我指定參數(shù),然后替換默認(rèn)的“-c”,這可能會(huì)更清晰:prog


1119:~/mypy$ python3 -c 'import argparse; p=argparse.ArgumentParser(prog="PROG");print(p.parse_args())' --test foobar

usage: PROG [-h]

PROG: error: unrecognized arguments: --test foobar

在正常腳本用法中, 是腳本的名稱。這里的“腳本名稱”是“-c”。sys.argv[0]


使用與 以下各項(xiàng)相呼應(yīng)的腳本:sys.argv


1119:~/mypy$ python3 echo.py --test foobar

['echo.py', '--test', 'foobar']


查看完整回答
反對(duì) 回復(fù) 2022-09-13
  • 1 回答
  • 0 關(guān)注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)