Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3 argparse:将字符串作为arg run funcA传递时,如果为虚线arg,则运行另一个func 以下是我试图实现的目标:_Python_Python 3.x_Argparse - Fatal编程技术网

Python3 argparse:将字符串作为arg run funcA传递时,如果为虚线arg,则运行另一个func 以下是我试图实现的目标:

Python3 argparse:将字符串作为arg run funcA传递时,如果为虚线arg,则运行另一个func 以下是我试图实现的目标:,python,python-3.x,argparse,Python,Python 3.x,Argparse,将字符串作为参数传递时,调用write_text()函数 python3 app.py将此文本写入文件 传递虚线参数时,调用另一个函数,在本例中为read_text() python3 app.py-r 当不传递参数时,打印帮助 python3 app.py 以下是我目前掌握的情况: 问题是,当我只调用-r时,它会抱怨缺少text的命令,因为text不是可选参数 我已经尝试创建子命令并生成所有args子命令,但是需要显式调用text参数,如python3 app.py text 我可能想得太多

将字符串作为参数传递时,调用write_text()函数

python3 app.py将此文本写入文件

传递虚线参数时,调用另一个函数,在本例中为read_text()

python3 app.py-r

当不传递参数时,打印帮助

python3 app.py


以下是我目前掌握的情况: 问题是,当我只调用
-r
时,它会抱怨缺少
text
的命令,因为
text
不是可选参数

我已经尝试创建子命令并生成所有args子命令,但是需要显式调用
text
参数,如
python3 app.py text

我可能想得太多了,忽略了一个简单的解决方案。在解析sys.argv时,我就让它工作得很好,但它并不漂亮。内置的帮助功能也很有用

提前谢谢


编辑: 这是我现在拥有的有用的东西

parser = argparse.ArgumentParser()
parser.add_argument('text', nargs='*', help="write text to file")
parser.add_argument('-r', '--read', action='store_true', help="read text from file")
args = parser.parse_args()
...
def main():
  if args.read:
    read_text()
  elif args.text:
    text = " ".join(args.text)    
    write_text(text)
  else:
    parser.print_help()
仍然认为有一种更干净的方法可以做到这一点…

这可能会有所帮助:

parser.add_argument('text', nargs='?', help="write text to file")
更多信息:


请注意,如果以后要将args.read用作布尔值,则应该对read参数使用
action='store\u true'

parser.add_argument('-r', '--read', action='store_true', help="read text from file")
这可能有助于:

parser.add_argument('text', nargs='?', help="write text to file")
更多信息:


请注意,如果以后要将args.read用作布尔值,则应该对read参数使用
action='store\u true'

parser.add_argument('-r', '--read', action='store_true', help="read text from file")

谢谢大家!
action='store\u true'
-r
参数起作用。然而,在将
nargs='?'
添加到文本参数后,当向程序传递一个由4个单词组成的字符串时,我遇到了一个无法识别的参数错误。当使用
nargs='*'
时,它创建了一个列表,然后我可以将该列表组合成一个字符串并传递给我的函数。不要让脚本猜测如何加入多个参数将参数转换为字符串:要显式,并且自己执行:
python3 app.py“将此文本写入文件”
。谢谢
action='store\u true'
-r
参数起作用。然而,在将
nargs='?'
添加到文本参数后,当向程序传递一个由4个单词组成的字符串时,我遇到了一个无法识别的参数错误。当使用
nargs='*'
时,它创建了一个列表,然后我可以将该列表组合成一个字符串并传递给我的函数。不要让脚本猜测如何加入多个参数将参数转换为字符串:显式,自己完成:
python3 app.py“将此文本写入文件”
。那么,您的问题解决了吗?是的,谢谢@cdrom我将您的答案标记为已接受。那么,您的问题解决了吗?是的,谢谢@cdrom我将您的答案标记为已接受。