python常规操作

如何将字符串中的所有英文字母转为小写

str.lower()方法

如何取某个文件夹内的所有图片

import glob

folder_path = 'your_folder_path/*.jpg'  # 指定文件夹路径和文件扩展名

image_files = glob.glob(folder_path)

for file in image_files:
    print(file)  # 这里可以根据需要,对每个文件进行进一步的处理

提取路径中的文件名

在Python中可以使用os.path模块的basename()方法来只提取路径中的文件名,不包含目录路径:

python
import os.path

path = '/usr/local/bin/python'

print(os.path.basename(path))

basename()会返回路径最后的文件名部分。另外os.path还提供了其他处理路径的有用方法:- dirname() :返回目录路径部分

  • join() :拼接目录和文件名
  • splitext(): 分离文件名和扩展名
  • split() :分离目录路径

如何按规律访问散列的按某个规律命名的变量

# 假设这是全局变量
x1 = 10
x2 = 20
x3 = 30
# ...

for i in range(1, 4):  # 假设你知道有 3 个变量
    var_name = f'x{i}'
    value = globals()[var_name]
    print(f"{var_name} = {value}")

通过pickle和共享内存加速大文件的读取

import pickle
from multiprocessing import shared_memory

# 创建一个字典
example_dict = {'key': 'value'}

# 使用pickle序列化字典
serialized_dict = pickle.dumps(example_dict)

# 创建共享内存并写入数据
shm = shared_memory.SharedMemory(create=True, size=len(serialized_dict))
shm.buf[:len(serialized_dict)] = serialized_dict

# 在另一个地方读取并反序列化数据
shm = shared_memory.SharedMemory(name=shm.name)
data = shm.buf[:len(serialized_dict)]
deserialized_dict = pickle.loads(data)

print(deserialized_dict)  # 输出: {'key': 'value'}

# 清理
shm.close()
shm.unlink()

pands相关

pandas取标题行

.columns.values.tolist()

pandas判断某个值是否为nan:

pd.isnull(data)

pandas读取excel

python
import pandas as pd

df = pd.read_excel('example.xlsx')

这会直接将Excel中的数据读取为一个Pandas DataFrame。然后就可以使用pandas的各种功能分析和处理这个DataFrame了:

python
print(df.head()) # 打印前5行

print(df['Column1'].sum()) # 某列求和

df.groupby('Category').size() # 按Category分组计数

Pandas比openpyxl更适合用于分析Excel数据,而openpyxl更侧重于读取/写入Excel文件。另外,如果Excel文件较大,可以使用read_excel的chunksize参数分块读取:

python
df = pd.read_excel('large_file.xlsx', chunksize=1000)

for chunk in df:
    # 对每1000行数据进行处理
    print(chunk.shape) 

pandas dataframe访问某行

df.iloc[i]#i为row index

numpy相关

如何根据一个数组的元素顺序对另一个数组进行排序

import numpy as np

times = np.array([120, 100, 130, 150])
scores = np.array([80, 90, 85, 95]) 

order = np.argsort(times)
sorted_scores = scores[order]

print(sorted_scores) 
# [90 85 95 80]

环境相关

windows 如何启用某个python作为环境

在命令窗口中进入虛拟环境所在的目录,然后运行以下命令:

.\Scripts\activate

查看当前使用的python的安装路径

import sys
pythonpath = sys.executable
print(pythonpath)

如何制作整合包

创建虚拟环境

首先确保本地环境已经安装好了Python3开发环境,如果没有,请移步:一网成擒全端涵盖,在不同架构(Intel x86/Apple m1 silicon)不同开发平台(Win10/Win11/Mac/Ubuntu)上安装配置Python3.10开发环境,囿于篇幅,这里不再赘述。

随后在克隆自己的项目,用于打包,这里我们以Bert-vits2-2.3的项目为例子:

git clone https://github.com/v3ucn/Bert-vits2-V2.3

随后进入项目的根目录:

cd Bert-vits2-V2.3

正常流程下我们会直接执行pip install -r requirements.txt在当前环境下安装依赖。

但是我们现在不使用当前开发环境,而是使用虚拟环境。

首先创建一个虚拟环境的工作目录:

mkdir venv

随后进入venv目录

cd venv

创建独立的虚拟环境:

python -m venv .

该命令python -m venv <目录位置> 可以创建一个独立的Python3运行环境。venv目录里面有python3、pip3等可执行文件,实际上是链接到Python系统目录的软链接。

此时,执行激活命令就可以进入该虚拟环境venv:

E:\work\Bert-vits2-2.3\venv>.\Scripts\activate  

(venv) E:\work\Bert-vits2-2.3\venv>  

可以看到,当前命令行的前缀有一个(venv)代表我们现在处于虚拟环境之中。

注意该虚拟环境和当前系统的Python3环境是隔离的。

我们也可也执行命令退出虚拟环境venv:

(venv) E:\work\Bert-vits2-2.3\venv>.\Scripts\deactivate.bat  
E:\work\Bert-vits2-2.3\venv>  

通过deactivate命令可以推出虚拟环境。
用虚拟环境venv给项目安装依赖

创建好了虚拟环境之后,我们就可以给当前的项目(Bert-vits2-2.3)安装依赖了:

.\venv\Scripts\pip.exe install -r .\requirements.txt

注意,这里所有的依赖文件都会安装到虚拟环境目录,即venv。

如果愿意,也可以执行命令来升级虚拟环境的pip软件:

.\venv\Scripts\python.exe -m pip install --upgrade pip

完成依赖的安装以后,可以执行命令来查看项目的依赖列表:

E:\work\Bert-vits2-2.3>.\venv\Scripts\pip.exe list  
Package            Version  
------------------ ------------  
certifi            2023.11.17  
charset-normalizer 3.3.2  
colorama           0.4.6  
coloredlogs        15.0.1  
filelock           3.13.1  
flatbuffers        23.5.26  
ftfy               6.1.3  
humanfriendly      10.0  
idna               3.6  
imageio            2.33.1  
Jinja2             3.1.2  
lazy_loader        0.3  
MarkupSafe         2.1.3  
mpmath             1.3.0  
networkx           3.2.1  
numpy              1.23.5  
onnx               1.14.0  
onnxruntime-gpu    1.16.2  
opencv-python      4.7.0.72  
packaging          23.2  
Pillow             9.5.0  
pip                23.0.1  
protobuf           4.23.2  
pyreadline3        3.4.1  
PyWavelets         1.5.0  
regex              2023.12.25  
requests           2.31.0  
scikit-image       0.21.0  
scipy              1.11.4  
setuptools         65.5.0  
sympy              1.12  
tifffile           2023.12.9  
tk                 0.1.0  
torch              2.0.1+cu118  
torchaudio         2.0.2+cu118  
torchvision        0.15.2+cu118  
tqdm               4.66.1  
typing_extensions  4.9.0  
urllib3            2.1.0  
wcwidth            0.2.12

也可以通过pip的show命令来查看依赖的具体位置:

E:\work\Bert-vits2-2.3>.\venv\Scripts\pip.exe show numpy  
Name: numpy  
Version: 1.23.5  
Summary: NumPy is the fundamental package for array computing with Python.  
Home-page: https://www.numpy.org  
Author: Travis E. Oliphant et al.  
Author-email:  
License: BSD  
Location: e:\work\Bert-vits2-2.3\venv\lib\site-packages  
Requires:  
Required-by: imageio, onnx, onnxruntime-gpu, opencv-python, PyWavelets, scikit-image, scipy, tifffile, torchvision

可以看到,这里numpy库就已经被安装到了e:\work\Bert-vits2-2.3\venv\lib\site-packages目录。

随后,我们执行项目中的脚本就可以用虚拟环境来执行,如:

.\venv\Scripts\pip.exe webui.py

如果不想通过命令执行,也可以编写bat脚本:

call venv\Scripts\activate.bat
python marching_squares.py

至此我们就完成了Bert-vits2-2.3虚拟环境依赖的安装,只需把Bert-vits2-2.3目录压缩,就拿到了一个Bert-vits2-2.3项目的整合包。

如何关闭conda在终端的自动启动

conda config --set auto_activate_base false

画图相关

如何根据某个数组对折线图上色

import matplotlib.pyplot as plt
import numpy as np

# 示例数据
x = np.random.rand(50)  # 随机生成x坐标
y = np.random.rand(50)  # 随机生成y坐标
colors = np.random.rand(50)  # 颜色数组,用于决定每个点的颜色

# 绘制散点图
plt.scatter(x, y, c=colors, cmap='viridis')  # 使用viridis颜色映射

# 添加色条
plt.colorbar()

# 显示图表
plt.show()

posted on 2023-10-09 21:37  FrostyForest  阅读(13)  评论(0编辑  收藏  举报