Из командной строкиPython Ошибка ввода-вывода все время пытается открыть файл
client.py Aaron 12000 HelloWorld.html GET
client.py
def main(argv):
serverName = argv[0]
serverPort = int(argv[1])
fileName = argv[2]
typeOfHttpRequest = argv[3]
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))
clientSocket.send(typeOfHttpRequest + " " + fileName + " HTTP/1.1\r\n\r\n")
content = clientSocket.recv(1024)
print content
clientSocket.close()
if __name__ == "__main__":
main(sys.argv[1:])
server.py
while True:
#Establish the connection
print 'Ready to serve....'
connectionSocket, addr = serverSocket.accept()
try:
message = connectionSocket.recv(1024)
typeOfRequest = message.split()[0]
filename = message.split()[1]
print typeOfRequest
print filename
f = open(filename[1:])
outputdata = f.read()
if typeOfRequest == 'GET':
for i in range(0, len(outputdata)):
connectionSocket.send(outputdata[i])
connectionSocket.close()
elif typeOfRequest == 'HEAD':
connectionSocket.send(True)
except IOError:
connectionSocket.send('HTTP/1.1 404 Not Found')
connectionSocket.close()
serverSocket.close()
Я положил Hello World.html в том же каталоге, что и server.py, но это всегда создает IOError. Кто-нибудь знает, почему это может быть так?
Эти файлы находятся в каталоге C: \ Networking
os.getcwd
показывает C: \ NetworkingHelloWorld.html находится в C: /networking/HelloWorld.html
Имя файла печатается правильно.
И правильно ли распечатывается имя файла? То есть это путь к файлу, заданный правилу 'open' –
В будущем для сообщений об ошибках всегда указывайте * full traceback *. –
Можете ли вы рассказать нам, что означает 'os.getcwd()' для вашего сервера? –