gpt4 book ai didi

python - 尝试使用 argparse 和 sys.argv 而无需在每个运行时都使用 sys.argv

转载 作者:行者123 更新时间:2023-11-28 17:36:30 25 4
gpt4 key购买 nike

在我正在编写的脚本中,我使用 argparse 作为主要参数(用于 --help、--todo 等),但尝试使用 sys.argv 获取作为第三个给定的文件的名称--add 的参数。我正在使用这个:

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这样使用不同的参数时,需要为给定的文件使用第三个参数

./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 不需要经常使用,所以它只能在需要它的函数运行时调用?

最佳答案

你做错了。下面是一些示例,可帮助您了解如何使用 argparse。标志不是 bool 值,它们可以有值。

import argparse
parser = argparse.ArgumentParser(description="This program does cool things.")

parser.add_argument("--add", help="Add a file to trackedfiles")
parser.add_argument("--dell", help="Delete file")
parser.add_argument("--copy", help="Copy file")
p_args = parser.parse_args()

print "Add-->.", p_args.add
print "Dell->.", p_args.dell #del is reserved word so we use dell
print "Copy->.", p_args.copy

这是用法。

$ python p.py --dell file1.txt --copy file2.txt --add file3.txt
Add-->. file3.txt
Dell->. file1.txt
Copy->. file2.txt

希望对您有所帮助。

关于python - 尝试使用 argparse 和 sys.argv 而无需在每个运行时都使用 sys.argv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29955662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com