python cmd模块解析多个带有空格的参数



我正在尝试编写一个Python脚本,该脚本将提交我的id和文件名,并根据文件名检索一些信息。";Cmd"模块应该提示我输入id和文件名。然而,到目前为止,这是我写的剧本。我必须在脚本中手动键入我的id,一旦我运行这个脚本,它就会提示我输入文件名。有没有什么方法可以让我制作这个脚本来提示我输入id和文件名(如果文件名包含空格怎么办(。

import requests
from cmd import Cmd

class Term(Cmd):
prompt = "promtp >>> "
def default(self, args):
id = "someid"
resp = requests.post('http://10.10.10.10/login',
headers={"Content-Type": "application/x-www-form-urlencoded"},
data={"username": name, "filename": f"{args}"})
def do_quit(self, args):
return 1
term = Term()
term.cmdloop()

文件名中包含空格的部分有点棘手。

在提示中键入您的姓名时,也要键入您的id,如下所示:

promtp >>> your_name your_id

默认方法中的args实际上是一个字符串,因此应该更改为单数,如arg

然后,您必须在arg中拆分字符串,这样您就可以在命令行中获得传递的两个单词。像这样:

def default(self, arg):

args = arg.split()
name = args[0]
id = args[1]

您还可以使用argparse模块来简化解析更复杂的场景。

下面是一个解析带有空格和id的文件名的示例:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument(dest='filename', action='append', type=str)
parser.add_argument(dest='id', type=int)
args = parser.parse_args()
print(args.filename)
print(args.id)

现在从命令行执行(注意,我在"我的文件名"周围使用了"(:

> python3 .example.py 'My File Name' 10        
['My File Name']
10

最新更新