首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >列表索引超出范围是否阻止404错误?

列表索引超出范围是否阻止404错误?
EN

Stack Overflow用户
提问于 2018-10-09 07:36:28
回答 1查看 148关注 0票数 0

我正在尝试完成这个实验,但似乎无法让它正常工作。当我尝试获取服务器上不存在的文件时,系统会给出

此页不工作127.0.0.1发送了无效响应。ERR_INVALID_HTTP_RESPONSE

我想得到的回答是这样的:

找不到

404文件

当我试图加载一个不存在的文件时,编译器对第16行说:

文件名= message.split()1 IndexError:列表索引超出范围

代码编译后,我可以打开我的Hello World文件,但我就是不能得到这个404错误。我得到了一个框架代码,所以有一些东西我不能在不偏离课程材料的情况下进行更改。

代码语言:javascript
复制
from socket import *

serverSocket = socket(AF_INET, SOCK_STREAM)
#Prepare a server socket
serverPort = 7000
serverSocket.bind(('127.0.0.1', serverPort))
serverSocket.listen(5)

while True:
    print('Ready to serve...')
    connectionSocket, addr = serverSocket.accept()
    #Fill in start #Fill in end
    try:
        message = connectionSocket.recv(1024)
        print (message)
        filename = message.split()[1]
        f = open(filename[1:])
        outputdata = f.read()
        #Send one HTTP header line into socket
        #Fill in start
        connectionSocket.send('\nHTTP/1.x 200 OK\n'.encode())

        #Fill in end
        #Send the content of the requested file to the client
        for i in range(0, len(outputdata)):
            connectionSocket.send(outputdata[i].encode())
        connectionSocket.send("\r\n".encode())
        connectionSocket.close()
        print ('File Recieved')

    except IOError:
        connectionSocket.send('\n404 File Not Found\n'.encode())
        connectionSocket.close()
        #Close client socket

serverSocket.close()
sys.exit()

框架代码似乎是Python2,而我使用的是Python3。我做了一些小的语法调整来调整。

删除打印(消息)将在编译器中生成"File Recieved“,但在浏览器中仍不会出现404错误。8个小时后我就迷失了方向。

EN

回答 1

Stack Overflow用户

发布于 2018-10-09 07:48:42

message.split()[1]中处理IndexError的一种方法是在message.split()[1]中处理和IndexError ;)

代码语言:javascript
复制
try:
    filename = message.split()[1]
except IndexError:
    send_404_response()
    continue
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52711414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档