0

我在一些在线教程的帮助下编写了下面的代码,如果您输入响应大小以及正确的主机和端口,一切正常。但是,如果你错过了一个步骤,它会给你一个错误。我想给出一条自定义消息,让用户知道他们做错了什么。我已经查找了如何使用“尝试”和“除外”,但我的问题是,我是否从代码中的所有内容中使用它?好像有点重复。

import socket
import argparse

parser = argparse.ArgumentParser()

parser.add_argument("-s", "--size", help = "How many bytes you will recive from the HTTP  Response")
parser.add_argument("-p", "--port", help = "The port to which you want to recive a response from")
parser.add_argument("-t", "--host", help = "The host to which you want to recive a response from")

args = parser.parse_args()

size = int(args.size)
port = int(args.port)
host = str(args.host)


s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))

message = ("i")
s.send(message.encode("utf-8"))

data = s.recv(size)
print(data)
4

1 回答 1

0

如果你不想做

try:
    size = int(args.size)
except ValueError:
    print("Size is not an integer!")
    sys.exit()

对于每个参数,您可以为解析器提供每个参数的类型 - 它会为您验证它们。

parser.add_argument("-s", "--size", help="...", type=int)

另请参阅argparse 文档中的此示例

于 2020-03-10T13:26:45.197 回答