在我正在寫的腳本中,我使用argparse作爲主參數(for --help,--todo等)但試圖使用sys.argv獲取作爲--add的第三個參數給出的文件的名稱。我用的是這樣的:試圖使用argparse和sys.argv而不需要使用sys.argv每個運行時間
def parseargs():
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument("--help", help="Print argument usage", action="store_true")
parser.add_argument("--memo", help="Read memo file", action="store_true")
parser.add_argument("--todo", help="Read TODO file", action="store_true")
parser.add_argument("--trackedfiles", help="Read tracked files list", action="store_true")
parser.add_argument("--add", help="Add a file to trackedfiles", action="store_true")
parser.add_argument("--edit", help="Edit file in .wpm_data with editor", action="store_true")
parser.add_argument("--newdir", help="Create a new directory to initialize user-data", action="store_true")
parser.add_argument("file")
p_args = parser.parse_args()
if p_args.help:
printargs()
sys.exit()
if p_args.memo:
print_memo()
sys.exit()
if p_args.todo:
print_todo()
sys.exit()
if p_args.trackedfiles:
print_trackedfiles()
sys.exit()
if p_args.add: # this is were I'm stumpped
if p_args.file == sys.argv[2]:
givenfile = p_args.file
else:
pass
print("[!]\t", givenfile, "to be added to trackedfiles")
sys.exit()
哪像這樣工作的:
./main.py --add textfile.txt
[!] textfile.txt to be added to trackedfiles
但是,當一個不同的觀點想--help
使用,第三個參數需要被用於givenfile
./main.py --help
usage: main.py [--help] [--memo] [--todo] [--trackedfiles] [--add] [--edit]
[--newdir]
file
main.py: error: the following arguments are required: file
如何使用argparse和sys.argv進行分隔,而sys.argv不是經常需要使用,因此只能在需要它的函數運行時才能調用?
因爲你做了'store_true',即使你在運行程序時不使用'--add',你的'if'語句在'p_args.add'上返回true – letsc