文章目录
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()
函数快速返回响应,根据响应头获取自己需要的信息
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内置的,因此我们导入自定义模块的步骤如下:
- 先导入sys模块
- 然后通过sys.path.append(path) 函数来导入自定义模块所在的目录
- 导入自定义模块。
这时候 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)