我正在尝试从用户输入的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()
答案 0 :(得分:0)
您正在使用URIExtra作为字符串:
URIextra = str(o[4])
您应该使用此:
URIextra = int(o[4])
答案 1 :(得分:0)
我能够更改代码以更有效地工作,现在不带PC,请稍后将其发布在这里