从套接字连接中获取数据并将其拆分

时间:2013-10-20 21:53:32

标签: python

这是一个家庭作业问题,但我对Python不太熟悉,也无法找到有关下面陈述中发生的事情的任何信息。

 message = connectionSocket.recvfrom(1024)
 filename = message.split()[1] 
 f = open(filename[1:]) 

因此,消息只是从连接到connectionSocket的客户端获取数据并将其放入消息中。从那里我可以看出消息是分裂的,这意味着它在消息中获取字符串并返回一个单词列表(我猜测分隔符只是一个空格)。那是什么[1]?

它应该是一个网络服务器,所以我想的是一个场景,比如我去serverAddress:serverPort / HelloWorld.html消息是'HelloWorld.html'部分,对吗?然后我打开文件但是我迷失了[1]和[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]返回到结尾。如果上述假设是正确的,那么它将丢弃前导/并允许打开文件。