亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

蟒蛇,argparse。-opt1 -part-of-opt1 <參數> 怎么樣?

蟒蛇,argparse。-opt1 -part-of-opt1 <參數> 怎么樣?

慕婉清6462132 2021-06-03 14:33:08
parser.add_argument('-i', required=True)  # One directory pathparser.add_argument('-d', required=True)  # Output database pathparser.add_argument('-t', required=True)  # DDL-script pathparser.add_argument('-c -i', required=True) # Another directory path我像這樣運行.py腳本:python.exe s.py -c -i D:\Temp\dir1 -d D:\Temp\out.db -t D:\Temp\ddl.sql -i D:\Temp\dir2并得到錯誤:usage: s.py [-h] -i I -d D -t T -c -i C _Is.py: error: argument -c -i: expected one argument如何在不重命名參數名稱的情況下使用它?
查看完整描述

2 回答

?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

看看sys.argv[1:]名單。我希望它會是


['-c', '-i', 'D:\Temp\dir1', '-d', 'D:\Temp\out.db', '-t', 'D:\Temp\ddl.sql', '-i', 'D:\Temp\dir2']

請注意,'-c -i' 是分開的。因為允許縮寫,所以-c被接受為“-c -i”標志的縮寫。但該字符串后跟“-i”和“D:...”。這是兩個論點,而不僅僅是一個。因此錯誤。


是的,您可以引用“-c -i”,這樣外殼就不會拆分它,但即使這樣也不能正常工作。我認為指定這樣的標志沒有任何意義。它不是建立在之前定義的“-i”動作之上。


In [113]: parser.parse_args(['-c -i', 'D:\Temp\dir1', '-d', 'D:\Temp\out.db', 

   '-t', 'D:\Temp\ddl.sql', '-i', 'D:\Temp\dir2'])

Out[113]: Namespace(d='D:\\Temp\\out.db', i='D:\\Temp\\dir2', 

   t='D:\\Temp\\ddl.sql', **{'c _i': 'D:\\Temp\\dir1'})

In [122]: getattr(Out[113],'c _i')

Out[122]: 'D:\\Temp\\dir1'


查看完整回答
反對 回復 2021-06-16
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

詳細說明user2357112的評論,這個“化合物名稱”不是一回事。在我的頭頂上,我無法命名執行此操作的單個程序的單個標志。

即使您設法實現了這一點(沒有什么是不可能的,盡管 argparse 將無濟于事),這個設計決定也會讓您的程序用戶大吃一驚。



查看完整回答
反對 回復 2021-06-16
  • 2 回答
  • 0 關注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號