我有一个烧瓶应用程序,它将用户键入的内容添加到表单中,然后添加一些额外的内容并将其作为另一个脚本中的变量传递。 例如:
session['search'] = '--q ' + request.args.get('search_key')
这将运行我最终的脚本,所以当用户输入“abc”这个传递时;
example.py --q abc
我想要做的是允许空格,以便用户输入“d e f”这将被传递;
example.py --q "d e f"
这有可能实现吗?目前,python脚本example.py
将空间移动到下一个参数上。
目前,当我包含“”时,会发送“搜索”一词,而不是用户在表单中添加的内容。
答案 0 :(得分:1)
你是如何运行第二个脚本的?
如果以正确的方式执行,则根本不会调用shell,因此您不需要添加引号(由shell使用 来决定如何将参数拆分为一个argv
数组),而是可以传递你想要的精确argv数组。
例如:
subprocess.Popen(['example.py', '--q', request.args.get('search_key', '')])
未添加引号,但不需要引号 - request.args.get('search_key, '')
的结果作为单个参数传递。请注意,这仅适用于未通过shell=True
。
有关详细信息,请参阅subprocess module文档 - 有关收集stdout和stderr,检查退出状态等信息。
答案 1 :(得分:0)
您可以按照以下方式执行此操作:
in_text = '"'+str(input('Enter arg: '))+'"'
session['search'] = '--q ' + request.args.get(in_text)
基本上,它将用户输入作为字符串输入,并在开头和结尾添加"
:
>>> a = '"'+str(input('In: '))+'"'
In: hello
>>> a
'"hello"'
>>> print a
"hello"