我正在尝试编写一个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