博客

  • Flask-WTF 1.2.1给渲染界面的标签添加id属性和class属性

    加class注意使用的是class_,有一个下划线

    class 分类表单(FlaskForm):
        name = StringField('分类名',id='分类名',render_kw={'class': '分类名 form-control'},validators=[DataRequired(),Length(1,100)])
        desc = TextAreaField ('分类描述',id='分类描述',render_kw={'class': '分类描述 form-control'},validators=[DataRequired(),Length(1,1000)])
        submit = SubmitField('创建分类',id='创建分类',render_kw={'class': '创建分类 btn btn-primary'})

     

     

  • clash自定义规则收集

    prepend:
      - 'DOMAIN-SUFFIX,mail.qq.com,DIRECT'
      - 'DOMAIN-SUFFIX,v.flomoapp.com,DIRECT'
      - 'DOMAIN-SUFFIX,kimi.moonshot.cn,DIRECT'
      - 'DOMAIN-SUFFIX,kuyour.top,DIRECT'
      - 'DOMAIN-SUFFIX,pypi.mirrors.ustc.edu.cn,DIRECT'
      - 'DOMAIN-SUFFIX,download.pytorch.org,DIRECT'
      - 'DOMAIN-SUFFIX,pypi.tuna.tsinghua.edu.cn,DIRECT'
      - 'DOMAIN-SUFFIX,mirrors.aliyun.com,DIRECT'
      - 'DOMAIN-SUFFIX,pypi.douban.com,DIRECT'
      - 'DOMAIN-SUFFIX,anythingllm.com,DIRECT'
      - 'DOMAIN-SUFFIX,blog.csdn.net,DIRECT'
      - 'DOMAIN-SUFFIX,registry.npm.taobao.org,DIRECT'

     

  • clash自定义规则,让指定网站不翻墙

    www.bilibili.com 直连

    yaml
    rules:
       - DOMAIN-SUFFIX,bilibili.com,DIRECT
       - DOMAIN,www.bilibili.com,DIRECT

    参数说明:

    • DOMAIN-SUFFIX,bilibili.com,DIRECT:匹配所有以 bilibili.com 结尾的域名,包括它的所有子域名,如 www.bilibili.comapi.bilibili.com 等,并让这些域名的流量直接连接,不走代理。
    • DOMAIN,www.bilibili.com,DIRECT:特别指定 www.bilibili.com 这个具体域名直连,即使前面有更宽泛的 DOMAIN-SUFFIX 规则。

    通常情况下,如果你已经使用 DOMAIN-SUFFIX,bilibili.com,DIRECT 规则,那么 www.bilibili.com 就已经被包含在内,不需要额外指定。但如果你想要确保 www.bilibili.com 特别被规则匹配,可以添加上述的 DOMAIN 规则。

    请注意,Clash的规则匹配是按照配置文件中的顺序进行的,因此,如果你有其他规则可能会匹配到 www.bilibili.com 并将其代理,你需要确保直连规则在这些代理规则之前。

    另外,如果你想要让整个 bilibili.com 域的所有子域都直连,只使用 DOMAIN-SUFFIX,bilibili.com,DIRECT 规则就足够了。如果你的Clash配置文件中已经有其他规则,确保将直连规则放在代理规则之前,以确保它们优先匹配。

    最后,修改配置文件后,需要重新加载或重启Clash以使配置生效。具体操作取决于你使用的Clash版本和平台。

    如图示例:

    或者点击[高级],直接编辑文件,适用于你有好多网站不想走代理,需要直连的情况

    Clash 是一个跨平台的代理软件,它允许用户自定义复杂的网络代理规则。如果你想要指定某些网站不走代理,直接连接,你可以在 Clash 的配置文件中设置相关的规则。

    Clash 的配置文件是一个 YAML 格式的文件,通常命名为 config.yaml。以下是一个基本的示例,展示了如何设置规则让指定网站直接连接(不经过代理):

    yaml
    rules:
    - MATCH,DIRECT
    - DOMAIN-SUFFIX,google.com,ProxyName # 所有google.com的子域名通过ProxyName代理
    - DOMAIN-SUFFIX,facebook.com,ProxyName # 所有facebook.com的子域名通过ProxyName代理
    - DOMAIN,example.com,DIRECT # example.com不走代理,直接连接
    - DOMAIN-SUFFIX,example.com,DIRECT # example.com的所有子域名不走代理,直接连接
    - GEOIP,CN,DIRECT # 所有在中国境内的IP地址不走代理,直接连接
    - FINAL,ProxyName # 以上规则都不匹配时,通过ProxyName代理

    在这个配置中:

    • MATCH,DIRECT 表示如果没有任何规则匹配,则流量直接连接。
    • DOMAIN-SUFFIX,google.com,ProxyName 表示所有 google.com 的子域名将通过名为 ProxyName 的代理连接。
    • DOMAIN,example.com,DIRECT 表示 example.com 这个具体域名不走代理,直接连接。
    • DOMAIN-SUFFIX,example.com,DIRECT 表示所有 example.com 的子域名不走代理,直接连接。
    • GEOIP,CN,DIRECT 表示所有地理定位为中国的IP地址不走代理,直接连接。
    • FINAL,ProxyName 表示如果流量没有匹配到前面的任何规则,则通过名为 ProxyName 的代理连接。

    你需要将这个配置文件放置在 Clash 可以读取到的位置,并在 Clash 中加载这个配置文件。具体的配置文件路径和加载方式可能因 Clash 的版本和操作系统而异。

    请注意,上述示例中的 ProxyName 是一个占位符,你需要替换为你实际的代理策略名称。如果你不熟悉 YAML 格式或 Clash 的配置方式,建议先阅读 Clash 的官方文档或相关指南。

     

  • findstr

    findstr 是一个在 Windows 命令提示符(cmd)中使用的命令行工具,用于在文件中搜索字符串。它支持正则表达式,这使得它在文本搜索方面非常灵活和强大。以下是一些 findstr 的常用用法:

    1. 基本搜索: 搜索包含特定字符串的行:
      cmd
      findstr "Hello" filename.txt
    2. 使用正则表达式: 使用正则表达式进行模式搜索:
      cmd
      findstr "regex_pattern" filename.txt
    3. 忽略大小写: 使用 /i 选项来执行不区分大小写的搜索:
      cmd
      findstr /i "HELLO" filename.txt
    4. 多字符串搜索: 同时搜索多个字符串:
      cmd
      findstr "string1" "string2" filename.txt
    5. 只打印包含匹配的行: 使用 /c: 选项后跟字符串,仅打印包含该字符串的行:
      cmd
      findstr /c:"Hello" filename.txt
    6. 排除特定字符串: 使用 /x 选项排除包含特定字符串的行:
      cmd
      findstr /c:"Hello" /x:"Goodbye" filename.txt
    7. 搜索多个文件: 搜索当前目录下所有 .txt 文件中的字符串:
      cmd
      findstr "Hello" *.txt
    8. 递归搜索子目录: 使用 /s 选项递归搜索子目录中的文件:
      cmd
      findstr /s "Hello" *.txt
    9. 打印行号: 使用 /n 选项打印包含匹配项的行的行号:
      cmd
      findstr /n "Hello" filename.txt
    10. 打印列号: 使用 /o 选项打印匹配项的字符偏移量(列号):
      cmd
      findstr /o "Hello" filename.txt
    11. 打印文件名: 使用 /p 选项只打印包含至少一个匹配项的文件名:
      cmd
      findstr /p "Hello" *.txt

    findstr 是一个非常有用的工具,特别是当您需要在命令行环境中快速搜索文本文件时。请注意,正则表达式的语法可能与其他工具或编程语言中的正则表达式略有不同,因此在使用时需要参考 findstr 的具体文档。

  • flask使用send_from_directory函数指定目录播放视频

    项目结构

    templates\index.html

    main.py

    网页

    templates\index.html

    <!DOCTYPE html>
    <html>
    <head>
        <title>视频播放</title>
    </head>
    <body>
        <h1>视频播放</h1>
        <video width="320" height="240" controls>
            <source src="/video/处处吻.mp4" type="video/mp4">
            你的浏览器不支持 HTML5 video 标签。
        </video>
    </body>
    </html>

    python文件

    main.py

    from flask import Flask, render_template, send_from_directory
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return render_template('index.html')  # 你的视频播放页面
    
    @app.route('/video/<filename>')
    def video(filename):
        VIDEO_PATH = 'E:/code/flask/video'
        # filename='1.mp4'
        return send_from_directory(directory=VIDEO_PATH, path=filename)
    
    if __name__ == '__main__':
        app.run(debug=True)

     

     

  • 如何最小化当前正在运行的python程序到任务栏?

    使用pyautogui库,模拟按键win+d
    
    import pyautogui
    pyautogui.keyDown('win')
    pyautogui.press('d')
    pyautogui.keyUp('win')

     

     

  • 查看当前安装的pyautogui的版本

    又看到一种查看指定python库版本的方法了

    pip show ipython

    代码中导入pyautogui

    打印pyautogui.__version__

    import pyautogui 
    print(pyautogui.__version__)

     

    想查看其他python库的版本也是一样的.

    python库安装太多了,我就想知道这一个库的版本就用这个方法了

  • raise ImageNotFoundException # Raise PyAutoGUI’s ImageNotFoundException. pyautogui.ImageNotFoundException

    0.9.54版本的pyautogui查找一张不存在的图片时,会出现一个异常

    File "C:\Users\rkey\AppData\Local\Programs\Python\Python38\lib\site-packages\pyautogui\__init__.py", line 174, in wrapper
        raise ImageNotFoundException  # Raise PyAutoGUI's ImageNotFoundException.
    pyautogui.ImageNotFoundException

    导致无法判断结果是None.

     

    比如这样会出问题:

    img_path= r".\\image_for_identify\\free_finished.jpg"
    while location is None and time.time() - start_time < timeout:
        location = pyautogui.locateOnScreen(imageFile,grayscale=True, confidence=0.8)
        if location is None:
            time.sleep(0.1)

    于是我异常捕获了一下,发现提示”该异常未找到 ”

     

    我反复在想这个异常,突然发现这个pyautogui.ImageNotFoundException说不定就是一个处理异常的包呢,

    再来一下异常处理,专门处理这个异常,发现能找到这个异常了

    导入一下试试

    from pyautogui import ImageNotFoundException
    try:
        location = pyautogui.locateOnScreen(图片路径, grayscale=True, confidence=0.8)
    if location is None:
        # 如果location是None,则抛出ImageNotFoundException
        raise ImageNotFoundException('无法在屏幕上找到指定的图像。')
    else:
        # 如果找到了图像,执行一些操作
        print(f"找到了图像,位置是:{location}")
    except ImageNotFoundException as e:
        # 捕获ImageNotFoundException异常
        print(e)

    ok,这个异常能捕获了

     

     

  • python百度orc识别

    from aip import AipOcr
    import chardet
    """定义常量"""
    APP_ID = ''
    API_KEY = ''
    SECRET_KEY = ''
    
    """初始化对象"""
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    
    """读取图片"""
    def get_file_content(filePath):
        with open(filePath, 'rb') as fp:
            return fp.read()
    
    image = get_file_content('image.png')
    
    """调用通用文字识别接口, 识别本地图像"""
    result = client.basicGeneral(image)
    print(result)
    # 打印每行文字
    for item in result['words_result']:
        print(item['words'])
    
    # 将每行文字拼接成一个整体
    string_text = ""
    for item in result['words_result']:
        string_text += item['words']
    print('string_text:', string_text)

     

     

  • 导出python包成wheel文件

     

    import subprocess
    def export_package_to_whl(package_name, target_directory):
        command = f"pip wheel --wheel-dir={target_directory} {package_name}"
        subprocess.call(command, shell=True)
    #导出requests包为.whL文件
    export_package_to_whl("requests", "path/to/target/directory")