作者: kukey-admin

  • anaconda历史版本下载列表

    https://kuyour.top/anaconda历史版本下载列表.txt

  • python代码里if __name__ == “__main__”:没有这个会怎么样

    在 Python 中,if __name__ == "__main__": 这个条件判断是非常重要的,特别是在模块被导入时。让我们详细探讨一下这个条件的作用和如果没有它会怎么样。

    作用

    1. 模块和脚本的区别
      • 当你直接运行一个 Python 文件时,Python 解释器将特殊变量 __name__ 设置为 "__main__"
      • 当你的 Python 文件被另一个 Python 文件导入时,__name__ 被设置为该文件的模块名。
    2. 保护代码块
      • if __name__ == "__main__": 这个条件判断确保了其中的代码只有在文件被直接运行时才会执行,而不是在被导入到另一个模块时执行。

    没有 if __name__ == "__main__": 会怎么样

    如果你省略了 if __name__ == "__main__": 这个条件判断,以下情况会发生:

    1. 代码总是执行
      • 无论文件是被直接运行还是被导入,文件中的所有代码都会执行。这意味着任何在全局作用域中的代码(不在函数或类定义中的代码)都会在导入时执行。
    2. 可能的副作用
      • 如果你的文件中包含了执行特定操作的代码(如创建窗口、启动服务器、打开文件等),这些操作会在模块被导入时执行,这可能不是你预期的行为。
      • 例如,如果你的 GUI 应用程序在导入时就创建了一个窗口,这可能会导致在其他模块中导入你的 GUI 模块时意外地弹出窗口。
    3. 测试和调试问题
      • 在开发过程中,你可能希望单独测试和调试模块中的函数或类,而不希望它们在导入时执行任何额外的代码。没有 if __name__ == "__main__": 会导致测试和调试变得更加复杂。

    示例

    假设你有以下模块 example.py

    # example.py
    def do_something():
        print("Doing something")
    
    print("This is always printed")
    
    if __name__ == "__main__":
        print("This is only printed when the module is run directly")
        do_something()
    • 如果你直接运行 example.py,输出将是:
      This is always printed
      This is only printed when the module is run directly
      Doing something
    • 如果你从另一个文件导入 example.py
      # another_file.py
      from example import do_something
      
      do_something()

      输出将是:

      This is always printed
      Doing something

      注意,"This is only printed when the module is run directly" 没有被打印,因为它在 if __name__ == "__main__": 块中。

    总之,使用 if __name__ == "__main__": 是一种良好的编程实践,它帮助你控制代码的执行环境,避免在模块被导入时产生意外的副作用。

  • python在windows系统上获取内存占用率

    import subprocess
    import re
    def get_memory_usage():
        # 执行 WMIC 命令并获取内存占用信息
        可用物理内存_info = subprocess.check_output("wmic OS get FreePhysicalMemory", shell=True).decode()
        总可见内存大小_info = subprocess.check_output("wmic OS get TotalVisibleMemorySize", shell=True).decode()
        # 使用正则表达式提取 FreePhysicalMemory 和 TotalVisibleMemorySize 的值
        free_memory = re.search(r'([0-9]+)', 可用物理内存_info).group(0)
        total_memory = re.search(r'([0-9]+)', 总可见内存大小_info).group(0)
        # 计算内存占用百分比
        try:
            memory_usage_percent_data = (1 - int(free_memory) / int(total_memory)) * 100
            memory_usage_percent='{:.3f}'.format(memory_usage_percent_data)
            return str(memory_usage_percent)+'%'
        except ZeroDivisionError:
            print("Error: Division by zero is not allowed.不允许除以零。")
            return None  # 或者可以设置为某个特定的错误代码或消息

     

  • python在windows系统上获取CPU占用率

    import subprocess
    import re
    def get_cpu_usage():
        # 执行 WMIC 命令并获取 CPU 占用率
        cpu_usage_info = subprocess.check_output("wmic cpu get loadpercentage", shell=True).decode()
        # 使用正则表达式提取 CPU 占用率的数值
        cpu_usage_match = re.search(r'([0-9]+)', cpu_usage_info)
        if cpu_usage_match:
            cpu_usage = int(cpu_usage_match.group(1))
            return str(cpu_usage)+'%'
        else:
            print("Failed to extract CPU usage information.提取CPU使用率信息失败.")
            return None

     

  • python在windows系统上使用socket获取ipv6地址

    def get_ipv6():
        # 用socket获取本机 IPv6 地址
        try:
            # 创建一个 socket 对象
            with socket.socket(socket.AF_INET6, socket.SOCK_DGRAM) as s:
                # 连接到一个公共的地址来获取本机的 IPv6 地址
                s.connect(('2001:db8::1', 80))
                # 获取 socket 对象的地址信息
                ipv6 = s.getsockname()[0]
                return ipv6
        except Exception as e:
            print("Failed to get IPv6 address.获取ipv6地址失败,错误信息:", e)
            return None

     

  • python在windows系统上使用socket获取ipv4地址

    import socket
    def get_ipv4():
        # 用socket获取本机 IPv4 地址
        st = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        try:       
            st.connect(('10.255.255.255', 1))
            ipv4 = st.getsockname()[0]
            return ipv4
        except Exception:
            ipv4 = '127.0.0.1'
        finally:
            st.close()
            # print(ipv4)
            return None

     

  • python 一个捕获异常的例子

        try:
            memory_usage_percent_data = (1 - int(free_memory) / int(total_memory)) * 100
            memory_usage_percent='{:.3f}'.format(memory_usage_percent_data)
            return str(memory_usage_percent)+'%'
        except ZeroDivisionError:
            print("Error: Division by zero is not allowed.不允许除以零。")
            return None  # 或者可以设置为某个特定的错误代码或消息
        else:
            pass
        finally:
            pass

     

  • linux下多条件查找文件,查找/etc目录下文件带有deepin字样的文件,同时以.conf为后缀的文件

    在Linux下,你可以使用find命令结合多个条件来查找文件。要查找/etc目录下包含deepin字样且以.conf为后缀的文件,你可以使用以下命令:

    find /etc -type f -name "*deepin*" -name "*.conf"

    这个命令的各个部分解释如下:

    • /etc:指定了搜索的起始目录。
    • -type f:指定只查找文件(不包括目录)。
    • -name "*deepin*":指定查找文件名中包含deepin字样的文件。
    • -name "*.conf":指定查找文件名以.conf为后缀的文件。

    这两个-name参数将联合使用,以匹配同时满足这两个条件的文件。注意,find命令的-name参数使用的是模式匹配,*代表任意数量的字符。

    执行这个命令后,它会列出所有在/etc目录及其子目录下满足上述条件的文件路径。如果你只想在/etc目录本身查找,不想搜索子目录,可以添加-maxdepth 1参数:

    find /etc -maxdepth 1 -type f -name "*deepin*" -name "*.conf"

    这将限制搜索范围只在/etc目录的第一层。

  • python 桌面时间

    代码来源:

    https://mp.weixin.qq.com/s/kuyObP50ZfsbZ9IKqp_IDw

    from tkinter import *
    import time, datetime
    from time import gmtime, strftime
    
    root =Tk()
    
    # Window Attributes
    root.overrideredirect(1)# 隐藏窗口边框
    root.wm_attributes("-transparentcolor","gray99")# 设置透明背景色
    
    running =True# 运行状态
    
    # 关闭窗口函数
    def close(event):
        global running
        running = False
    
    root.bind('<Escape>', close)# 绑定Esc键关闭窗口
    
    screen_width = root.winfo_screenwidth()# 获取屏幕宽度
    screen_height = root.winfo_screenheight()# 获取屏幕高度
    
    timeframe =Frame(root, width=screen_width, height=screen_height, bg="gray99")# 创建主框架
    timeframe.grid(row=0,column=0)
    
    tkintertime =StringVar()# 创建时间变量
    timelabel =Label(timeframe, textvariable=tkintertime, fg="white", bg="gray99", font=("NovaMono",40))# 创建时间标签
    timelabel.place(y=screen_height/2-60, x=screen_width/2, anchor="center")# 设置时间标签位置
    
    tkinterdate =StringVar()# 创建日期变量
    datelabel =Label(timeframe, textvariable=tkinterdate, fg="white", bg="gray99", font=("Bahnschrift",15))# 创建日期标签
    datelabel.place(y=screen_height/2+60, x=screen_width/2, anchor="center")# 设置日期标签位置
    
    while running:
        tkintertime.set(value=strftime("%H:%M:%S"))# 更新时间
        tkinterdate.set(value=strftime("%A, %d %B"))# 更新日期
        root.update_idletasks()# 更新窗口
        root.update()# 更新窗口
        time.sleep(1)  # 延迟1秒

     

  • 检测浏览器版本.js

    function detectIE() {
        var ua = window.navigator.userAgent;
        var msie = ua.indexOf('MSIE ');
        var trident = ua.indexOf('Trident/');
    
        if (msie > 0) { // IE 10 or older
            var ieVersion = parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
            console.log('当前浏览器版本:IE ' + ieVersion + ' detected');
            return ieVersion;
        }
        if (trident > 0) { // IE 11
            var rv = ua.indexOf('rv:');
            var ieVersion = parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
            console.log('当前浏览器版本:IE ' + ieVersion + ' detected');
            return ieVersion;
        }
        console.log('检测到非IE浏览器\  Non-IE browser detected');
        return false;
    }
    
    var ieVersion = detectIE();
    
    if (ieVersion === 6) {
        console.log('Redirecting IE6 users to a special page...');
        window.location.href = 'ie6专属页面.html';
    }
    function getExplore(){
      var Sys = {};  
      var ua = navigator.userAgent.toLowerCase();  
      var s;  
      (s = ua.match(/rv:([\d.]+)\) like gecko/)) ? Sys.ie = s[1] :
      (s = ua.match(/msie ([\d\.]+)/)) ? Sys.ie = s[1] :  
      (s = ua.match(/edge\/([\d\.]+)/)) ? Sys.edge = s[1] :
      (s = ua.match(/firefox\/([\d\.]+)/)) ? Sys.firefox = s[1] :  
      (s = ua.match(/(?:opera|opr).([\d\.]+)/)) ? Sys.opera = s[1] :  
      (s = ua.match(/chrome\/([\d\.]+)/)) ? Sys.chrome = s[1] :  
      (s = ua.match(/version\/([\d\.]+).*safari/)) ? Sys.safari = s[1] : 0;  
      // 根据关系进行判断
      if (Sys.ie) return ('IE: ' + Sys.ie);  
      if (Sys.edge) return ('EDGE: ' + Sys.edge);
      if (Sys.firefox) return ('Firefox: ' + Sys.firefox);  
      if (Sys.chrome) return ('Chrome: ' + Sys.chrome);  
      if (Sys.opera) return ('Opera: ' + Sys.opera);  
      if (Sys.safari) return ('Safari: ' + Sys.safari);
      return 'Unkonwn';
    }
    var getExploreVersion = getExplore()
    console.log('当前浏览器版本:'+getExploreVersion);