这是一个家庭作业问题,但我对Python不太熟悉,也无法找到有关下面陈述中发生的事情的任何信息。
message = connectionSocket.recvfrom(1024)
filename = message.split()[1]
f = open(filename[1:])
因此,消息只是从连接到connectionSocket的客户端获取数据并将其放入消息中。从那里我可以看出消息是分裂的,这意味着它在消息中获取字符串并返回一个单词列表(我猜测分隔符只是一个空格)。那是什么[1]?
它应该是一个网络服务器,所以我想的是一个场景,比如我去serverAddress:serverPort / HelloWorld.html消息是'HelloWorld.html'部分,对吗?然后我打开文件但是我迷失了[1]和[1:]的目的。
答案 0 :(得分:1)
filename = message.split()[1]
您猜错(正确)message
中的字符串被拆分并作为单词列表返回。
如果这是HTTP请求,那么message
的前1024个字节将是:
"GET /file.html cruft..."
或"GET /path/file.html cruft..."
。
通过split
这个字符串,您可以生成一个列表开头:
["GET", "/file.html", "cruft..."]
。
[1]表示列表中索引为[1]的元素,即第二个元素,第一个索引位置为[0]。所以filename
= "/file.html"
或= "/directory/subdirectory/file.html"
f = open(filename[1:])
再次使用索引切片filename
中的任何内容。 [1:]将filename
的每个元素从[1]返回到结尾。如果上述假设是正确的,那么它将丢弃前导/
并允许打开文件。