分类: Python

Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。

Python 由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。

像 Perl 语言一样, Python 源代码同样遵循 GPL(GNU General Public License) 协议。

官方宣布,2020 年 1 月 1 日, 停止 Python 2 的更新。

Python 2.7 被确定为最后一个 Python 2.x 版本。

  • 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")

     

  • opencv-python

    import cv2
    print(cv2.getVersionString())
    
    image = cv2.imread("1.png")#从图像文件中读取图像数据。返回图片的长度、宽度和颜色通道数(1:灰度图像,3:彩色图像【红、绿、蓝三个颜色通道】,4:alpha 通道)
    print(image.shape)
    
    cv2.imshow("image",image)#显示图像
    cv2.waitKey()#等待输入。在弹出的窗口中输入任意键,窗口关闭。

    import cv2
    print(cv2.getVersionString())
    
    image = cv2.imread("1.png")#从图像文件中读取图像数据。返回图片的长度、宽度和颜色通道数(1:灰度图像,3:彩色图像【红、绿、蓝三个颜色通道】,4:alpha 通道)
    
    crop = image[10:170, 40:200]#截取一个区块。从x坐标的10到170,y坐标的40到200这个区块截取出来
    cv2.imshow("crop",crop)
    cv2.waitKey()

    import cv2
    import numpy as np
    
    image = np.zeros([300,300,3], dtype=np.uint8)#画一个画布
    
    cv2.imshow("image",image)
    cv2.waitKey()

    import cv2
    import numpy as np
    
    #画一个画布
    image = np.zeros([400,400,3], dtype=np.uint8)
    
    '''
    cv2.line()//画线
    cv2.circle()//画圆
    cv2.rectangle()//长方形
    cv2.ellipse()//椭圆
    cv2.putText(图像源,文字,(x坐标开始点,x坐标结束点),字体序号默认0,缩放系数默认1,颜色值,粗细值,线条类型1实线)//文字绘制
    '''
    
    #cv2.line(图像源, (x坐标开始点,x坐标结束点),(y坐标开始点,y坐标结束点),颜色值,粗细值)
    cv2.line(image, (100,200),(250,250),(255,0,0),2)
    
    cv2.rectangle(image,(30,100),(60,150),(0,255,0),2)
    
    cv2.circle(image,(60,60),30,(0,0,213),3)
    
    cv2.ellipse(image,(256,256),(100,50),0,0,180,(20,213,79),-1) #线型-1表示填充
    
    cv2.putText(image, "hello", (100,50),0,1,(255,255,255),2,1)
    
    cv2.imshow("image",image)
    cv2.waitKey()

     

  • kivy

    import kivy
    kivy.require('1.0.6') # 注意要把这个版本号改变成你现有的Kivy版本号!
    
    from kivy.app import App # 译者注:这里就是从kivy.app包里面导入App类
    from kivy.uix.label import Label # 译者注:这里是从kivy.uix.label包中导入Label控件,这里都注意开头字母要大写
    
    class MyApp(App):
    
        def build(self): # 译者注:这里是实现build()方法
            return Label(text='Hello world') # 译者注:在这个方法里面使用了Label控件
    
    if __name__ == '__main__':
        MyApp().run() # 译者注:这里就是运行了。
    
    '''
    译者注:这一段的额外添加的备注是给萌新的.
    就是要告诉萌新们,一定要每一句每一个函数每一个变量甚至每一个符号,都要读得懂!!!
    如果是半懂不懂的状态,一定得学透了,要不然以后早晚得补课.
    这时候又让我想起了结构化学。
    总之更详细的内容后面会有,大家加油。
    '''

     

  • python tkinter把菜单项的代码单独整成一个py文件,在主代码里引入

    来源:https://yiyanapp.baidu.com/talk/share?shareId=EWdqrEWHXk8iC&UK=NpPDHztRDAf359YiuNCkfg&vp=0&sk=690efbc2

    在Tkinter中,将菜单项(或其他GUI组件)的代码单独整理成一个Python文件,并在主代码中引入,是一种很好的模块化编程实践。这样做可以提高代码的可读性、可维护性和复用性。

    以下是如何将菜单项代码单独整理成一个文件,并在主代码中引入的示例:

    1. 创建菜单项模块(例如:menu_items.py

    首先,你需要创建一个新的Python文件,比如命名为menu_items.py,并在这个文件中定义你的菜单项。这个模块可以返回一个配置好的菜单对象,或者直接在主窗口中添加菜单项。

    # menu_items.py
    
    import tkinter as tk
    from tkinter import Menu
    
    def create_menu(root):
        # 创建一个菜单栏
        menu_bar = Menu(root)
        
        # 创建一个文件菜单
        file_menu = Menu(menu_bar, tearoff=0)
        file_menu.add_command(label="新建", command=lambda: print("新建文件"))
        file_menu.add_command(label="打开", command=lambda: print("打开文件"))
        file_menu.add_separator()
        file_menu.add_command(label="退出", command=root.quit)
        
        # 将文件菜单添加到菜单栏
        menu_bar.add_cascade(label="文件", menu=file_menu)
        
        # 可以继续添加其他菜单...
        
        # 将菜单栏添加到根窗口
        root.config(menu=menu_bar)
    
    # 注意:这个模块本身不会创建窗口或执行任何GUI操作,
    # 它只是定义了一个函数,该函数接收一个Tk根窗口作为参数,并为其添加菜单。
    

    2. 在主代码中引入菜单项模块

    然后,在你的主Tkinter代码文件中,你可以导入这个menu_items模块,并使用它提供的create_menu函数来为你的Tk根窗口添加菜单。

    # main.py
    
    import tkinter as tk
    from menu_items import create_menu
    
    def main():
        # 创建Tk根窗口
        root = tk.Tk()
        root.title("主窗口")
        
        # 调用menu_items模块中的create_menu函数来添加菜单
        create_menu(root)
        
        # 这里可以添加其他GUI组件...
        
        # 进入Tkinter主事件循环
        root.mainloop()
    
    if __name__ == "__main__":
        main()
    

    在这个示例中,menu_items.py模块定义了一个create_menu函数,该函数负责创建一个菜单栏并将其添加到传入的Tk根窗口中。然后,在main.py文件中,我们导入了menu_items模块,并在主函数中调用了create_menu函数,将Tk根窗口作为参数传递给它,从而在我们的主窗口中添加了菜单。

  • flask播放视频网站

    python代码:

    # -*- coding: utf-8 -*-
    from flask import Flask,request,render_template
    
    app = Flask(__name__)
    
    @app.route("/",methods=['GET'])  
    def hello_world():
        list = [
        	'1 a.mkv',
        	'[Kamigami] Psycho-Pass - 01 [1280x720 x264 AAC Sub(CH,JP)].mkv',
        	'[Kamigami] Psycho-Pass - 02 [1280x720 x264 AAC Sub(CH,JP)].mkv'
        ]
        return render_template("index.html",list=list)
    
    if __name__ == '__main__':
        app.run(debug=True,host='0.0.0.0',port=8000)

    html代码:

    <!DOCTYPE html>
    <html lang="zh-cmn-Hans">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>yz</title>
    </head>
    <body>
    <video width="320" height="240" controls>
        <source src="{{ url_for('static',filename='[Kamigami] Psycho-Pass - 01 [1280x720 x264 AAC Sub(CH,JP)].mkv') }}" type="video/mp4">
    </video>
    {% for i in list %}
    <video width="320" height="240" controls>
        <source src="{{ url_for('static',filename=i) }}" type="video/mp4">
    </video>
    {% endfor %}
    </body>
    <script>
    </script>
    </html>
    

     

  • python for遍历处列表的索引和内容

    在Python中,你可以使用for循环来遍历列表的索引和内容。通常,我们使用enumerate()函数来实现这个目的,它返回列表的索引和对应的值。下面是一个示例:

    my_list = ['apple', 'banana', 'cherry']  
      
    for index, content in enumerate(my_list):  
        print(f"Index: {index}, Content: {content}")

    这段代码将输出:

    Index: 0, Content: apple  
    Index: 1, Content: banana  
    Index: 2, Content: cherry

    enumerate()函数会生成一个枚举对象,该对象在每次迭代时产生一个包含索引和值的元组。在for循环中,我们可以直接解包这个元组到变量indexcontent中。

    如果你只想获取索引,可以使用range()函数结合列表长度来实现:

    my_list = ['apple', 'banana', 'cherry']  
      
    for index in range(len(my_list)):  
        content = my_list[index]  
        print(f"Index: {index}, Content: {content}")

    这段代码的输出与上一个示例相同,但它没有使用enumerate()函数,而是直接通过索引访问列表元素。这种方法在性能上可能稍微差一些,因为每次迭代都需要通过索引访问列表元素,而enumerate()函数在内部进行了优化。在大多数情况下,使用enumerate()是更简洁、更推荐的做法。

  • python输出此电脑所有的磁盘盘符

    在Python中,可以使用os模块来获取操作系统相关的信息,包括所有的磁盘盘符。但是,os模块并没有直接提供获取所有磁盘盘符的功能。不同的操作系统(如Windows、Linux、macOS)处理磁盘的方式也不同,所以获取磁盘盘符的方法也会有所不同。

    以下是一个在Windows系统上获取所有磁盘盘符的示例:

    import os  
    import win32api  
      
    def get_all_drives():  
        drives = win32api.GetLogicalDriveStrings()  
        drives = drives.split('\000')[:-1]  # 删除最后一个空字符串  
        return drives  
      
    print(get_all_drives())

    在这个示例中,我们使用了win32api模块的GetLogicalDriveStrings函数来获取所有的逻辑驱动器字符串。然后,我们使用字符串的split方法将这个字符串分割成一个列表,每个元素都是一个磁盘盘符。最后,我们删除列表中的最后一个空字符串,并返回这个列表。

    注意:这个示例只在Windows系统上有效。如果你正在使用Linux或macOS,那么你需要使用不同的方法来获取磁盘信息。在Linux上,你可以解析/proc/mounts/etc/fstab文件来获取磁盘信息。在macOS上,你可以使用diskutil list命令来获取磁盘信息,但这可能需要使用subprocess模块来执行外部命令。

  • python读取一个txt文件,获取每一行并且过滤出mkv文件名、mp4文件名、ogg文件名

    # -*- coding: utf-8 -*-
    # 假设你的txt文件名为files.txt,每行包含一个文件名  
    file_path = 'filenames.txt'  
    
    # 打开文件并读取所有行  
    with open('filenames.txt', 'r', encoding='gbk') as file:  
        lines = file.readlines()  
      
    # 检查最后一行是否为空白行(只包含换行符或空格)  
    if lines and lines[-1].strip() == '':  
        # 如果是,则删除最后一行  
        lines = lines[:-1]  
      
    # 将修改后的内容写回文件  
    with open('filenames.txt', 'w', encoding='gbk') as file:  
        file.writelines(lines)
    
    # 创建一个空列表来存储过滤后的文件名  
    filtered_filenames = []  
      
    # 使用with语句打开文件,这样文件会在使用完毕后自动关闭  
    with open(file_path, 'r', encoding='gbk') as file:  
        # 逐行读取文件  
        for line in file:  
            # 去除行尾的换行符  
            filename = line.strip()  
            # 检查文件名是否以.mkv、.mp4或.ogg结尾  
            if filename and filename.endswith(('.mkv', '.mp4', '.ogg')):  
                # 如果是,则添加到过滤后的文件名列表中  
                filtered_filenames.append(filename)  
    
    for i in filtered_filenames:
        print(i)
    # 打印过滤后的文件名列表
    #print(filtered_filenames)