码迷,mamicode.com
首页 > 编程语言 > 详细

python WEB 开发

时间:2020-12-29 11:43:36      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:指针   temp   return   ora   flat   sockets   ken   exp   linux   

socketserver

重写处理函数

import http.server
import socketserver
import os,io
import urllib
from http import HTTPStatus
import email.utils
import datetime
import json
import data

PORT = 8000
class do_Handler(http.server.SimpleHTTPRequestHandler):
    def do_app(self):
        pass
    def global_request(self):
        #print("____________________global_request______start")
        #print("self.requestline: ",self.requestline)
        path=urllib.parse.unquote(self.path)
        #print("path: ",path)
        self.canshu={}
        path=path.split("?")
        if len(path)>1:
            for i in path[1].split("&"):
                self.canshu[i.split("=")[0]]=i.split("=")[1]
        #print("canshu: ",canshu)
        #print("self.request: ",self.request)
        #print("self.command: ",self.command)
        if self.command=="POST":
            #print("POST_____________")
            #print("int(self.headers[‘content-length‘]): ",int(self.headers[‘content-length‘]))
            req_datas = self.rfile.read(int(self.headers[‘content-length‘])) #重点在此步!
            #print("self.rfile.read(int(self.headers[‘content-length‘])): ",req_datas.decode())
            for i in req_datas.decode().split("&"):
                self.canshu[i.split("=")[0]]=i.split("=")[1]
            #print("canshu: ",canshu)
            #print("POST_____________end")
        #print("canshu: ",self.canshu)
        #print("self.client_address: ",self.client_address)
        #print("self.server: ",self.server)
        #print("self.headers: ",self.headers)
        #print("____________________global_request______end")
        """
        ____________________global_request______start
        self.requestline:  POST /test/test/ttt HTTP/1.1
        path:  /test/test/ttt
        canshu:  {}
        self.request:  <socket.socket fd=476, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=(‘127.0.0.1‘, 8000), raddr=(‘127.0.0.1‘, 52512)>
        self.command:  POST
        POST_____________
        int(self.headers[‘content-length‘]):  32
        self.rfile.read(int(self.headers[‘content-length‘])):  username=postman&password=123456
        canshu:  {‘username‘: ‘postman‘, ‘password‘: ‘123456‘}
        POST_____________end
        self.client_address:  (‘127.0.0.1‘, 52512)
        self.server:  <socketserver.TCPServer object at 0x000001794669FD48>        
        self.headers:  Host: localhost:8000
        Connection: keep-alive
        Content-Length: 32
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
        Content-Type: application/x-www-form-urlencoded
        Accept: */*
        Origin: chrome-extension://ojcehbbmmmlmlobapckckmgnhdmpmacc
        Sec-Fetch-Site: none
        Sec-Fetch-Mode: cors
        Sec-Fetch-Dest: empty
        Accept-Encoding: gzip, deflate, br
        Accept-Language: zh-CN,zh;q=0.9
        Cookie: _xsrf=2|21e063b3|84bfebbd08d32087174eee4a4d4d33ec|1607150430; username-localhost-8888="2|1:0|10:1607150550|23:username-localhost-8888|44:NjU1NzNlODUwYjQ0NDVmYzhmYzc3Zjg2MjQ1OGYzNTQ=|f787f4c6fb32f672faa8e72fa7bf68e7c8505085e331b7ec4915dd43ea7a533a"


        ____________________global_request______end
        """
        return self.canshu
    def do_GET(self):
        self.global_request()
        f = self.send_head()
        if f:
            try:
                self.copyfile(f, self.wfile)
            finally:
                f.close()
        #self.do_app()
        for i in self.urls.keys():
            if i==self.path.split(‘?‘,1)[0]:
                app=getattr(self,self.urls[i])
                app()
    
    def send_head(self):
        path = self.translate_path(self.path)
        #print("path",path,self.path)
        f = None
        if os.path.isdir(path):
            pass#return self.list_directory(path)
        if not os.path.isfile(path):
            return None
        ctype = self.guess_type(path)
        try:
            if os.path.exists(path):
                if os.path.splitext(path)[1]==".py":
                    f = open(path, ‘rb‘)
                else:
                    f = open(path, ‘rb‘)
        except OSError:
            self.send_error(HTTPStatus.NOT_FOUND, "File not found")
            return None
        try:
            fs = os.fstat(f.fileno())
            self.send_response(HTTPStatus.OK)
            self.send_header("Content-type", ctype)
            self.send_header("Content-Length", str(fs[6]))
            self.send_header("Last-Modified",
                self.date_time_string(fs.st_mtime))
            self.end_headers()
            return f
        except:
            f.close()
            raise       


    def do_POST(self):
        self.global_request()
        f = self.send_head()
        if f:
            try:
                self.copyfile(f, self.wfile)
            finally:
                f.close()
        #self.do_app()
        for i in self.urls.keys():
            if i==self.path.split(‘?‘,1)[0]:
                app=getattr(self,self.urls[i])
                app()
        

class app(do_Handler):
    urls={
            "/test":"test",
            "/":"hello",
            "/py":"do_py",
            "/data_json":"data_json"
        }
    def hello(self):
        self.send_response(200)
        self.send_header(‘Content-type‘, ‘text/html‘)
        self.end_headers()
        self.wfile.write(b"hello hello()\r\n")
        """f = io.BytesIO()
        f.write(b"hello world\r\n")
        f.seek(0)
        if f:
            try:
                self.copyfile(f, self.wfile)
            finally:
                f.close()"""
    def do_py(self):
        self.send_response(200)
        self.send_header(‘Content-type‘, ‘text/html‘)
        self.end_headers()
        self.wfile.write(b"hello do_py()\r\n")

        
    def test(self):
        print(self.canshu)
        self.send_response(200)
        self.send_header(‘Content-type‘, ‘text/html‘)
        self.end_headers()
        #self.wfile.write(b"hello test()\r\n")
        self.wfile.write(json.dumps(self.canshu).encode("utf-8"))
    def data_json(self):
        self.send_response(200)
        self.send_header(‘Content-type‘, ‘text/html‘)
        self.end_headers()
        self.wfile.write(data.get_dataB(self.canshu))

with socketserver.TCPServer(("", PORT), app) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()
"""class tes:
    def do_test(self):
        print("do_test():")
method=getattr(tes,"do_test")
method(tes)"""

json数据通讯

knowledge={
    "编程":{
        "c":["指针","数组","函数"],
        "python":{"包":["Tkinter","pandas"]},
        "网页":["js","css","html"],
        "算法":{"排序算法":["冒泡","堆排","PID"]},
        "机器学习":"Tensorflow"
    },
    "计算机":{"软件":{"系统":["linux","Windows"]},
              "硬件":{"单片机":["stc51","esp8266"]},
              "网络":["FTP","HTTP"]},
    "生活":{"兴趣":"航模","感想":["爱情","生活","理想"]}
}
import json
import md_html
knowledge_data1=[]
def bianli(knowledge,tab):
    for i in knowledge.keys():
        print(tab*"\t",i,type(i),tab)
        if type(knowledge[i])==dict:
            bianli(knowledge[i],tab+1)
        if type(knowledge[i])==list:
            for ii in knowledge[i]:
                print((tab+1)*"\t",ii,type(ii),tab)
        elif type(knowledge[i])==str:
            print((tab+1)*"\t",knowledge[i],type(knowledge[i]),tab)


def bianli1(knowledge,tab):
    for i in knowledge.keys():
        #print(tab*"\t",i,type(i),tab)
        try:
            knowledge_data1[tab].append(i)
        except IndexError:
            knowledge_data1.append([])
            knowledge_data1[tab].append(i)
        if type(knowledge[i])==dict:
            bianli1(knowledge[i],tab+1)
        if type(knowledge[i])==list:
            for ii in knowledge[i]:
                #print((tab+1)*"\t",ii,type(ii),tab+1)
                try:
                    knowledge_data1[tab+1].append(ii)
                except IndexError:
                    knowledge_data1.append([])
                    knowledge_data1[tab+1].append(ii)
        elif type(knowledge[i])==str:
            #print((tab+1)*"\t",knowledge[i],type(knowledge[i]),tab+1)
            try:
                knowledge_data1[tab+1].append(knowledge[i])
            except IndexError:
                knowledge_data1.append([])
                knowledge_data1[tab+1].append(knowledge[i])
md_data={}
with open("data.json","r",encoding="utf-8") as f:
    md_data=json.load(f)

def get_dataB(canshu):
    c=canshu["json"]
    if c=="nr2_0":
        return str(knowledge.keys())[10:-1].replace("‘","\"").encode("utf-8")
    if c=="nr2_1":
        global knowledge_data1
        knowledge_data1=[]
        bianli1(knowledge,0)
        return str(knowledge_data1).replace("‘","\"").encode("utf-8") 
    if c=="nr_ml":
        return str(md_data["blml"].keys())[10:-1].replace("‘","\"").encode("utf-8")
    if c=="mdhtml":
        return md_html.create_html(canshu["data"]).encode("utf-8")

html重构

import markdown

md=markdown.Markdown(extensions=[‘markdown.extensions.fenced_code‘,‘markdown.extensions.tables‘])#Markdown 类实例
#重复调用它的 convert() 和 reset() 函数

"""print(html1) 
md.reset()"""
def md_Z_html(canshu):
    with open(canshu,‘r‘,encoding="utf-8", errors="xmlcharrefreplace") as f:
        text=f.read()
    md.reset()
    html = md.convert(text)
    return html
h1="""<html>

<head>
    <meta charset="utf-8">
"""
style="""<style>
#tou{position:relative;min-width:500px;width:100%;height:60px;border-bottom:3px solid rgb(25,156,173);}.markdown-body{box-sizing:border-box;min-width:200px;max-width:980px;margin:0 auto;padding:45px;}.markdown-body .octicon{display:inline-block;fill:currentColor;vertical-align:text-bottom}.markdown-body .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.markdown-body .anchor:focus{outline:none}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1:hover .anchor .octicon-link:before,.markdown-body h2:hover .anchor .octicon-link:before,.markdown-body h3:hover .anchor .octicon-link:before,.markdown-body h4:hover .anchor .octicon-link:before,.markdown-body h5:hover .anchor .octicon-link:before,.markdown-body h6:hover .anchor .octicon-link:before{width:16px;height:16px;content:‘ ‘;display:inline-block;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNiAxNicgdmVyc2lvbj0nMS4xJyB3aWR0aD0nMTYnIGhlaWdodD0nMTYnIGFyaWEtaGlkZGVuPSd0cnVlJz48cGF0aCBmaWxsLXJ1bGU9J2V2ZW5vZGQnIGQ9J000IDloMXYxSDRjLTEuNSAwLTMtMS42OS0zLTMuNVMyLjU1IDMgNCAzaDRjMS40NSAwIDMgMS42OSAzIDMuNSAwIDEuNDEtLjkxIDIuNzItMiAzLjI1VjguNTljLjU4LS40NSAxLTEuMjcgMS0yLjA5QzEwIDUuMjIgOC45OCA0IDggNEg0Yy0uOTggMC0yIDEuMjItMiAyLjVTMyA5IDQgOXptOS0zaC0xdjFoMWMxIDAgMiAxLjIyIDIgMi41UzEzLjk4IDEyIDEzIDEySDljLS45OCAwLTItMS4yMi0yLTIuNSAwLS44My40Mi0xLjY0IDEtMi4wOVY2LjI1Yy0xLjA5LjUzLTIgMS44NC0yIDMuMjVDNiAxMS4zMSA3LjU1IDEzIDkgMTNoNGMxLjQ1IDAgMy0xLjY5IDMtMy41UzE0LjUgNiAxMyA2eic+PC9wYXRoPjwvc3ZnPg==)}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1.5;color:#24292e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body details{display:block}.markdown-body summary{display:list-item}.markdown-body a{background-color:initial}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit;font-weight:bolder}.markdown-body h1{font-size:2em;margin:.67em 0}.markdown-body img{border-style:none}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:monospace,monospace;font-size:1em}.markdown-body hr{box-sizing:initial;height:0;overflow:visible}.markdown-body input{font:inherit;margin:0}.markdown-body input{overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#0366d6;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{height:0;margin:15px 0;overflow:hidden;background:0 0;border:0;border-bottom:1px solid #dfe2e5}.markdown-body hr:after,.markdown-body hr:before{display:table;content:""}.markdown-body hr:after{clear:both}.markdown-body table{border-spacing:0;border-collapse:collapse}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:1px solid #d1d5da;border-radius:3px;box-shadow:inset 0 -1px 0 #d1d5da}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:0;margin-bottom:0}.markdown-body h1{font-size:32px}.markdown-body h1,.markdown-body h2{font-weight:600}.markdown-body h2{font-size:24px}.markdown-body h3{font-size:20px}.markdown-body h3,.markdown-body h4{font-weight:600}.markdown-body h4{font-size:16px}.markdown-body h5{font-size:14px}.markdown-body h5,.markdown-body h6{font-weight:600}.markdown-body h6{font-size:12px}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{padding-left:0;margin-top:0;margin-bottom:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code,.markdown-body pre{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px}.markdown-body pre{margin-top:0;margin-bottom:0}.markdown-body input::-webkit-inner-spin-button,.markdown-body input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none;appearance:none}.markdown-body:checked+.radio-label{position:relative;z-index:1;border-color:#0366d6}.markdown-body .border{border:1px solid #e1e4e8 !important}.markdown-body .border-0{border:0 !important}.markdown-body .border-bottom{border-bottom:1px solid #e1e4e8 !important}.markdown-body .rounded-1{border-radius:3px !important}.markdown-body .bg-white{background-color:#fff !important}.markdown-body .bg-gray-light{background-color:#fafbfc !important}.markdown-body .text-gray-light{color:#6a737d !important}.markdown-body .mb-0{margin-bottom:0 !important}.markdown-body .my-2{margin-top:8px !important;margin-bottom:8px !important}.markdown-body .pl-0{padding-left:0 !important}.markdown-body .py-0{padding-top:0 !important;padding-bottom:0 !important}.markdown-body .pl-1{padding-left:4px !important}.markdown-body .pl-2{padding-left:8px !important}.markdown-body .py-2{padding-top:8px !important;padding-bottom:8px !important}.markdown-body .pl-3,.markdown-body .px-3{padding-left:16px !important}.markdown-body .px-3{padding-right:16px !important}.markdown-body .pl-4{padding-left:24px !important}.markdown-body .pl-5{padding-left:32px !important}.markdown-body .pl-6{padding-left:40px !important}.markdown-body .f6{font-size:12px !important}.markdown-body .lh-condensed{line-height:1.25 !important}.markdown-body .text-bold{font-weight:600 !important}.markdown-body .pl-c{color:#6a737d}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#005cc5}.markdown-body .pl-e,.markdown-body .pl-en{color:#6f42c1}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292e}.markdown-body .pl-ent{color:#22863a}.markdown-body .pl-k{color:#d73a49}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#032f62}.markdown-body .pl-smw,.markdown-body .pl-v{color:#e36209}.markdown-body .pl-bu{color:#b31d28}.markdown-body .pl-ii{color:#fafbfc;background-color:#b31d28}.markdown-body .pl-c2{color:#fafbfc;background-color:#d73a49}.markdown-body .pl-c2:before{content:"^M"}.markdown-body .pl-sr .pl-cce{font-weight:700;color:#22863a}.markdown-body .pl-ml{color:#735c0f}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{font-weight:700;color:#005cc5}.markdown-body .pl-mi{font-style:italic;color:#24292e}.markdown-body .pl-mb{font-weight:700;color:#24292e}.markdown-body .pl-md{color:#b31d28;background-color:#ffeef0}.markdown-body .pl-mi1{color:#22863a;background-color:#f0fff4}.markdown-body .pl-mc{color:#e36209;background-color:#ffebda}.markdown-body .pl-{color:#f6f8fa;background-color:#005cc5}.markdown-body .pl-mdr{font-weight:700;color:#6f42c1}.markdown-body .pl-ba{color:#586069}.markdown-body .pl-sg{color:#959da5}.markdown-body .pl-corl{text-decoration:underline;color:#032f62}.markdown-body .mb-0{margin-bottom:0 !important}.markdown-body .my-2{margin-bottom:8px !important}.markdown-body .my-2{margin-top:8px !important}.markdown-body .pl-0{padding-left:0 !important}.markdown-body .py-0{padding-top:0 !important;padding-bottom:0 !important}.markdown-body .pl-1{padding-left:4px !important}.markdown-body .pl-2{padding-left:8px !important}.markdown-body .py-2{padding-top:8px !important;padding-bottom:8px !important}.markdown-body .pl-3{padding-left:16px !important}.markdown-body .pl-4{padding-left:24px !important}.markdown-body .pl-5{padding-left:32px !important}.markdown-body .pl-6{padding-left:40px !important}.markdown-body .pl-7{padding-left:48px !important}.markdown-body .pl-8{padding-left:64px !important}.markdown-body .pl-9{padding-left:80px !important}.markdown-body .pl-10{padding-left:96px !important}.markdown-body .pl-11{padding-left:112px !important}.markdown-body .pl-12{padding-left:128px !important}.markdown-body hr{border-bottom-color:#eee}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:1px solid #d1d5da;border-radius:3px;box-shadow:inset 0 -1px 0 #d1d5da}.markdown-body:after,.markdown-body:before{display:table;content:""}.markdown-body:after{clear:both}.markdown-body>:first-child{margin-top:0 !important}.markdown-body>:last-child{margin-bottom:0 !important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body blockquote,.markdown-body details,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:#e1e4e8;border:0}.markdown-body blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eaecef}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#6a737d}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li{word-wrap:break-all}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #dfe2e5}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa;}.markdown-body img{max-width:100%;box-sizing:initial;background-color:#fff}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body code{padding:.2em .4em;margin:0;font-size:85%;border-radius:3px}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;border-radius:3px}.markdown-body pre code{max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}.markdown-body .commit-tease-sha{display:inline-block;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:90%;color:#444d56}.markdown-body .full-commit .btn-outline:not(:disabled):hover{color:#005cc5;border-color:#005cc5}.markdown-body .blob-wrapper{overflow-x:auto;overflow-y:hidden}.markdown-body .blob-wrapper-embedded{max-height:240px;overflow-y:auto}.markdown-body .blob-num{width:1%;min-width:50px;padding-right:10px;padding-left:10px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px;line-height:20px;color:rgba(27,31,35,.3);text-align:right;white-space:nowrap;vertical-align:top;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.markdown-body .blob-num:hover{color:rgba(27,31,35,.6)}.markdown-body .blob-num:before{content:attr(data-line-number)}.markdown-body .blob-code{position:relative;padding-right:10px;padding-left:10px;line-height:20px;vertical-align:top}.markdown-body .blob-code-inner{overflow:visible;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px;color:#24292e;word-wrap:normal;white-space:pre}.markdown-body .pl-token.active,.markdown-body .pl-token:hover{cursor:pointer;background:#ffea7f}.markdown-body .tab-size[data-tab-size="1"]{-moz-tab-size:1;tab-size:1}.markdown-body .tab-size[data-tab-size="2"]{-moz-tab-size:2;tab-size:2}.markdown-body .tab-size[data-tab-size="3"]{-moz-tab-size:3;tab-size:3}.markdown-body .tab-size[data-tab-size="4"]{-moz-tab-size:4;tab-size:4}.markdown-body .tab-size[data-tab-size="5"]{-moz-tab-size:5;tab-size:5}.markdown-body .tab-size[data-tab-size="6"]{-moz-tab-size:6;tab-size:6}.markdown-body .tab-size[data-tab-size="7"]{-moz-tab-size:7;tab-size:7}.markdown-body .tab-size[data-tab-size="8"]{-moz-tab-size:8;tab-size:8}.markdown-body .tab-size[data-tab-size="9"]{-moz-tab-size:9;tab-size:9}.markdown-body .tab-size[data-tab-size="10"]{-moz-tab-size:10;tab-size:10}.markdown-body .tab-size[data-tab-size="11"]{-moz-tab-size:11;tab-size:11}.markdown-body .tab-size[data-tab-size="12"]{-moz-tab-size:12;tab-size:12}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body pre code,.item-content pre code,.markdown-body pre .subst,.item-content pre .subst,.markdown-body pre .tag .title,.item-content pre .tag .title,.markdown-body pre .lisp .title,.item-content pre .lisp .title,.markdown-body pre .clojure .built_in,.item-content pre .clojure .built_in,.markdown-body pre .nginx .title,.item-content pre .nginx .title{}.markdown-body pre .string,.item-content pre .string,.markdown-body pre .title,.item-content pre .title,.markdown-body pre .constant,.item-content pre .constant,.markdown-body pre .parent,.item-content pre .parent,.markdown-body pre .tag .value,.item-content pre .tag .value,.markdown-body pre .rules .value,.item-content pre .rules .value,.markdown-body pre .rules .value .number,.item-content pre .rules .value .number,.markdown-body pre .preprocessor,.item-content pre .preprocessor,.markdown-body pre .ruby .symbol,.item-content pre .ruby .symbol,.markdown-body pre .ruby .symbol .string,.item-content pre .ruby .symbol .string,.markdown-body pre .aggregate,.item-content pre .aggregate,.markdown-body pre .template_tag,.item-content pre .template_tag,.markdown-body pre .django .variable,.item-content pre .django .variable,.markdown-body pre .smalltalk .class,.item-content pre .smalltalk .class,.markdown-body pre .addition,.item-content pre .addition,.markdown-body pre .flow,.item-content pre .flow,.markdown-body pre .stream,.item-content pre .stream,.markdown-body pre .bash .variable,.item-content pre .bash .variable,.markdown-body pre .apache .tag,.item-content pre .apache .tag,.markdown-body pre .apache .cbracket,.item-content pre .apache .cbracket,.markdown-body pre .tex .command,.item-content pre .tex .command,.markdown-body pre .tex .special,.item-content pre .tex .special,.markdown-body pre .erlang_repl .function_or_atom,.item-content pre .erlang_repl .function_or_atom,.markdown-body pre .markdown .header,.item-content pre .markdown .header{color:#df5000}.markdown-body pre .comment,.item-content pre .comment,.markdown-body pre .annotation,.item-content pre .annotation,.markdown-body pre .template_comment,.item-content pre .template_comment,.markdown-body pre .diff .header,.item-content pre .diff .header,.markdown-body pre .chunk,.item-content pre .chunk,.markdown-body pre .markdown .blockquote,.item-content pre .markdown .blockquote{color:#888}.markdown-body pre .number,.item-content pre .number,.markdown-body pre .date,.item-content pre .date,.markdown-body pre .regexp,.item-content pre .regexp,.markdown-body pre .literal,.item-content pre .literal,.markdown-body pre .smalltalk .symbol,.item-content pre .smalltalk .symbol,.markdown-body pre .smalltalk .char,.item-content pre .smalltalk .char,.markdown-body pre .go .constant,.item-content pre .go .constant,.markdown-body pre .change,.item-content pre .change,.markdown-body pre .markdown .bullet,.item-content pre .markdown .bullet,.markdown-body pre .markdown .link_url,.item-content pre .markdown .link_url{color:#080}.markdown-body pre .label,.item-content pre .label,.markdown-body pre .javadoc,.item-content pre .javadoc,.markdown-body pre .ruby .string,.item-content pre .ruby .string,.markdown-body pre .decorator,.item-content pre .decorator,.markdown-body pre .filter .argument,.item-content pre .filter .argument,.markdown-body pre .localvars,.item-content pre .localvars,.markdown-body pre .array,.item-content pre .array,.markdown-body pre .attr_selector,.item-content pre .attr_selector,.markdown-body pre .important,.item-content pre .important,.markdown-body pre .pseudo,.item-content pre .pseudo,.markdown-body pre .pi,.item-content pre .pi,.markdown-body pre .doctype,.item-content pre .doctype,.markdown-body pre .deletion,.item-content pre .deletion,.markdown-body pre .envvar,.item-content pre .envvar,.markdown-body pre .shebang,.item-content pre .shebang,.markdown-body pre .apache .sqbracket,.item-content pre .apache .sqbracket,.markdown-body pre .nginx .built_in,.item-content pre .nginx .built_in,.markdown-body pre .tex .formula,.item-content pre .tex .formula,.markdown-body pre .erlang_repl .reserved,.item-content pre .erlang_repl .reserved,.markdown-body pre .prompt,.item-content pre .prompt,.markdown-body pre .markdown .link_label,.item-content pre .markdown .link_label,.markdown-body pre .vhdl .attribute,.item-content pre .vhdl .attribute,.markdown-body pre .clojure .attribute,.item-content pre .clojure .attribute,.markdown-body pre .coffeescript .property,.item-content pre .coffeescript .property{color:#88f}.markdown-body pre .keyword,.item-content pre .keyword{color:#48b;font-weight:bold}.markdown-body pre .title,.item-content pre .title{color:#454545}.markdown-body pre .markdown .emphasis,.item-content pre .markdown .emphasis,.markdown-body pre .comment,.item-content pre .comment{font-style:italic}.markdown-body pre .nginx .built_in,.item-content pre .nginx .built_in{font-weight:normal}.markdown-body pre .coffeescript .javascript,.item-content pre .coffeescript .javascript,.markdown-body pre .javascript .xml,.item-content pre .javascript .xml,.markdown-body pre .tex .formula,.item-content pre .tex .formula,.markdown-body pre .xml .javascript,.item-content pre .xml .javascript,.markdown-body pre .xml .vbscript,.item-content pre .xml .vbscript,.markdown-body pre .xml .css,.item-content pre .xml .css,.markdown-body pre .xml .cdata,.item-content pre .xml .cdata{opacity:0.5}.markdown-body ul,.item-content ul{margin:0.5em 0;padding:0 0 0 2em}.markdown-body ul li,.item-content ul li{list-style:disc}.hljs{display:block;overflow-x:auto;padding:0.5em;color:#333;background:#f8f8f8;}.hljs-comment,.hljs-quote{color:#998;font-style:italic;}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:bold;}.hljs-number,.hljs-literal,.hljs-variable,.hljs-template-variable,.hljs-tag .hljs-attr{color:#008080;}.hljs-string,.hljs-doctag{color:#d14;}.hljs-title,.hljs-section,.hljs-selector-id{color:#900;font-weight:bold;}.hljs-subst{font-weight:normal;}.hljs-type,.hljs-class .hljs-title{color:#458;font-weight:bold;}.hljs-tag,.hljs-name,.hljs-attribute{color:#000080;font-weight:normal;}.hljs-regexp,.hljs-link{color:#009926;}.hljs-symbol,.hljs-bullet{color:#990073;}.hljs-built_in,.hljs-builtin-name{color:#0086b3;}.hljs-meta{color:#999;font-weight:bold;}.hljs-deletion{background:#fdd;}.hljs-addition{background:#dfd;}.hljs-emphasis{font-style:italic;}.hljs-strong{font-weight:bold;}</style>
"""
h2="""  <link rel="stylesheet" href="highlight/styles/default.css">
    <link rel="stylesheet" href="highlight/styles/stackoverflow-dark.css">
    <script src="highlight/highlight.pack.js">
        /*

Fancy style (c) John Smith <email@domain.com>

*/
    </script>
    <script>
        hljs.initHighlightingOnLoad();
    </script>
</head>

<body>
<div id="tou">
<a href="index.html">
Index.html</a>
</div>

    <div class="markdown-body">
"""

js1="""<script>
            /* $(document).ready(function (){
         $("pre code").each(function (i,block){
             hljs.highlightBlock(block);
         });
     });
    */
            document.addEventListener(‘DOMContentLoaded‘, (event) => {
                document.querySelectorAll(‘pre code‘).forEach((block) => {
                    hljs.highlightBlock(block);
                });
            });
        </script>
"""
h3="""</div>
</body>
</html>
"""
def create_html(cansh):
    mdhtml=md_Z_html(cansh)
    return h1+style+h2+mdhtml+js1+h3
    """with open(‘test.html‘,‘w‘,encoding="utf-8") as f:
    f.write(h1+style+h2+mdhtml+js1+h3)"""

python WEB 开发

标签:指针   temp   return   ora   flat   sockets   ken   exp   linux   

原文地址:https://www.cnblogs.com/createhm/p/14181541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!