python编码中常见问题及解决方案

1. 输入minVal和maxVal,将 minVal - maxVal 分成 N 等份,列表返回

def GetSplit(minVal, maxVal, num):
    sumVal = maxVal - minVal   # 计算总共有多少个数
    remainder = sumVal % num   # 计算总数是否能均分
    step = sumVal // num       # 计算每份的份数
    if remainder != 0 :
    	# 如果不能均分,就将余下的数放到最后一份
        tempMaxVal = maxVal - step - remainder   # 计算去掉余数和最后一份的最大值
        toList = GetSplit(minVal, tempMaxVal, tempMaxVal // step)  # 最小值到去掉最后一份和余数的值,必定能均分,迭代计算
        toList.append([maxVal - step - remainder, maxVal - 1])     # 补充最后一份
    else:
        # 如果能均分,就 使用 range 函数均分
        toList = [[i, i + step - 1] for i in range(minVal, maxVal, step)]
    return toList

2. request 请求MP4视频URL时,如何获取视频大小

使用 requests.head() 函数快速返回响应,根据响应头获取自己需要的信息
requests.head(mp4Url)

def GetMp4Length(mp4Url):
    webRespData = requests.head(mp4Url)
    return webRespData.headers.get('content-length') # 此处获取的是视频大小

3. 输出00,01,02或001,002,003等格式字符串

rjust() 方法会返回一个原字符串右对齐 ,并使用字符填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串


for i in range(1,30):
    print (str(i).rjust(3,'0'))  # 使用0填充数字到3位

4. 如何在 Python 中打印对象的属性

1. dir()函数

dir() 函数是 Python 中的一个内置函数,它可以返回一个对象的所有属性。该函数返回一个列表,其中包含对象的属性名称。

# 判断通过 dir 函数打印出来的数组,具体是方法还是属性
def MethodOrAttribute(obj):
    items = dir(obj)
    attributes = []
    methods = []

    for item in items:
        if callable(getattr(obj, item)):
            methods.append(item)
        else:
            attributes.append(item)

    print("Attributes:", attributes)
    print("Methods:", methods)

obj = MyClass()
MethodOrAttribute(obj)

2. vars()函数

vars() 函数是 Python 中的另一个内置函数,它可以返回一个对象的 __dict__ 属性,该属性包含对象的所有属性。

5. 使用 openpyxl 清空工作表

sheet.delete_rows(1, sheet.max_row)

6. python如何 import 自己的模块

一个 test1.py 的文件就是一个名字叫 test1 的模块,一个 test2.py 的文件就是一个名字叫 test2 的模块。

1. 直接 import

使用这种方式有个前提,就是执行文件和 依赖模块 同属于同个目录(父级目录),如下图
在这里插入图片描述

2. 通过sys模块导入自定义模块的path

如果执行文件和模块不在同一目录,这时候直接import是找不到自定义模块的。如下图:
在这里插入图片描述

  • 执行文件 main.py 在 main 目录下
  • showworld 模块在 lib 目录下

sys模块是python内置的,因此我们导入自定义模块的步骤如下:

  1. 先导入sys模块
  2. 然后通过sys.path.append(path) 函数来导入自定义模块所在的目录
  3. 导入自定义模块。

这时候 main.py 这样写:

import sys
sys.path.append(r"C:\Users\Neusoft\Desktop\lib")
import showworld

3. 使用包

将需要import的目录作为一个包来处理,可以更加方便地import另一个目录的文件。

  • 在需要import的目录中,创建一个__init__.py文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。这个文件可以为空。

这种方法的优点是使用了包的机制,可以更加方便地管理和组织代码。同时,不需要手动修改sys.path或使用复杂的相对路径。

在这里插入图片描述

这时候 main.py 这样写:

from lib import showworld

showworld.showworld()  # 调用 showworld 模块的 showworld 函数

7、解决资源文件打包后运行加载资源文件路径错误问题

import sys  # 系统内置类
from PyQt5.QtWidgets import QApplication, QWidget
import os

def source_path(relative_path):
    # 是否Bundle Resource(打包)
    # 判断是否存在属性frozen,以此判断是打包的程序还是源代码。false为默认值,即没有frozen属性时返回false
    if getattr(sys, 'frozen', False):
        base_path = sys._MEIPASS  # 该属性也是打包程序才会有,源代码尝试获取该属性会报错
    else:
        # 当源代码运行时使用该路径
        # os.path.abspath()函数是用来获取绝对路径的函数,它可以将相对路径转换为绝对路径。
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)


def main():
    # 修改当前工作目录,使得资源文件可以被正确访问
    cd = source_path('')
    os.chdir(cd)

    # 创建一个应用程序对象
    app = QApplication(sys.argv)

    uiInfo = MyUiInfo()  # 实例化 ui 对象

    uiInfo.ui.show()

    # 进入程序的主循环,并通过exit函数确保主循环安全结束
    sys.exit(app.exec_())

8、将一个 List N等分

def ListNHalve(list, num):
    halve_list = []
    import numpy as np
    # 将 list 按照 num 等分
    split_result  = np.array_split(list, num)
    for part in split_result:
        halve_list .append(part)
    return halve_list

9、打印所在行号

sys._getframe().f_lineno

import sys
print(sys._getframe().f_lineno)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值