从URL提取查询字符串

时间:2018-11-02 03:09:51

标签: python web

我正在尝试从用户输入的URL中提取查询字符串,该URL会变成整数,所以http://127.0.0.1:8000/?1653。当我尝试执行此操作时,python给了我错误,

  

do_GET中的文件“ C:\ Users ... \ Documents \ webserver \ server.py”,第26行   int(URIextra)ValueError:以10为底的int()的无效文字:

我不知道我在做什么错,任何帮助将不胜感激。

import http.server, socketserver, os
from urllib.parse import urlparse
from shutil import copyfile

dirs = []

PORT = 8000

URIextra = ""


class CustomHandler(http.server.SimpleHTTPRequestHandler):

    def __init__(self, req, client_addr, server):
        http.server.SimpleHTTPRequestHandler.__init__(self, req, client_addr, server)

    def do_GET(self):
        o = urlparse(self.path)
        URIextra = str(o[4])
        http.server.SimpleHTTPRequestHandler.do_GET(self)
        print(URIextra)
        dirs = os.listdir()
        f = open("index.txt", "w")
        f.write(os.listdir())
        f.close()
        int(URIextra)
        copyfile(dirs[URIextra], "CurrentFile.mp3")

class MyTCPServer(socketserver.ThreadingTCPServer):
    allow_reuse_address = True

os.chdir(os.getcwd() + "/web")

httpd = MyTCPServer(('localhost', PORT), CustomHandler)
httpd.allow_reuse_address = True
print("Serving at port", PORT)
httpd.serve_forever()

2 个答案:

答案 0 :(得分:0)

您正在使用URIExtra作为字符串:

URIextra = str(o[4])

您应该使用此:

URIextra = int(o[4])

答案 1 :(得分:0)

我能够更改代码以更有效地工作,现在不带PC,请稍后将其发布在这里