python报不是有效的 Win32 应用程序

`OSError: [WinError 193] %1 不是有效的 Win32 应用程序。

一般报这种错误是由于引用的dll动态链接库和python位数不匹配。例如,python可能是64位但链接库是32位。

如何判断一个dll/exe是32位还是64位?


我把周立功can的链接库zlgcan.dll用记事本打开是PE L所以是32位,和64位的python不匹配。

exescope可以查看到version是1

网传可以使用depends读取dll信息,实际没有成功。

如果按照了visual studio,会有dumpbin程序,将其文件夹加入环境变量,可以使用该工具查看dll中的函数信息。


E:\mydoc\CAN相关\zlgcan_demo\python合集_20221029\python合集_20221029\python带界面demo\demo<!--autointro-->

python32和python64共存实现

Anaconda 使用 set CONDA_FORCE_32BIT=1 切换32位环境失败的解决方法

set CONDA_FORCE_32BIT=1

使用
conda info查看
还是win-64!!切换失败了啊,然后就找到了如下解决措施

解决措施

因为使用set命令设置环境变量在powershell中无效,所以我们更换如下命令即可

$Env:CONDA_FORCE_32BIT=1

这样就成功切换了。

然后创建虚拟环境
conda create -n python32 python=3.6


(base) PS E:\mydoc\sync_pc_home_work\pyfile\DataExtract<!--autointro-->

python plt避免标题坐标相互重叠

在使用Python matplotlib库的plt函数绘图时,可以采取以下几种方法来避免标题和坐标轴标签的重叠:

  1. 调整图像的大小和尺寸。可以使用plt.subplots函数来创建一个包含多个子图的图像,并通过调整图像大小和尺寸来避免标题和坐标轴标签的重叠。例如:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(6, 4))
ax.plot(x, y)
ax.set_title('Title', fontsize=16)
ax.set_xlabel('X Label', fontsize=14)
ax.set_ylabel('Y Label', fontsize=14)

在上面的代码中,通过设置figsize参数调整图像大小和尺寸,可以避免标题和坐标轴标签的重叠。

  1. 调整坐标轴标签的位置。可以使用plt.subplots_adjust函数来调整坐标轴标签的位置。例如:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Title', fontsize=16)
ax.set_xlabel('X Label', fontsize=14)
ax.set_ylabel('Y Label', fontsize=14)
plt.subplots_adjust(top=0.85, bottom=0.15, left=0.15, right=0.85)

在上面的代码中,通过设置top、bottom、left和right参数来调整坐标轴标签的位置,使它们不会重叠。

  1. 使用旋转的坐标轴标签。可以使用ax.set_xticklabels和ax.set_yticklabels函数来设置坐标轴标签,并通过设置rotation参数来旋转它们。例如:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Title', fontsize=16)
ax.set_xlabel('X Label', fontsize=14)
ax.set_ylabel('Y Label', fontsize=14)
plt.setp(ax.get_xticklabels(), rotation=45)
plt.setp(ax.get_yticklabels(), rotation=45)

在上面的代码中,通过设置rotation参数来旋转坐标轴标签,使它们不会重叠。

python 将一串数字形式的时间转换为标准时间格式

@python 将一串数字形式的时间转换为标准时间格式!!!
1.首先,确定你的那一串时间是10位还是13位的,
如果是10位请看方案一,13位请看解决方案二。
方案一:
10位的数字表示的是秒时间戳。

import time
time.time()#获取当前的秒时间戳

通过下边的代码就可以将10位的秒时间戳抓换为标准输出格式

import time
tupTime = time.localtime(1566366555)#秒时间戳
stadardTime = time.strftime("%Y-%m-%d %H:%M:%S", tupTime)
print(stadardTime)
#2019-08-21 13:49:15

方案二:
13位的数字串是毫秒级别的时间戳,通过下边的代码转换为表转格式:

import time
timeNum=1566366547705#毫秒时间戳
timeTemp = float(timeNum/1000)
tupTime = time.localtime(timeTemp)
stadardTime = time.strftime("%Y-%m-%d %H:%M:%S", tupTime)
print(stadardTime)
#2019-08-21 13:49:07

python运算符


/
表示浮点数除法, 结果中保留小数点
num = 5
num /= 2
print(num)  # 输出 2.5
1
2
3
//
表示整数除法,返回不大于结果的一个最大的整数.
num = 5
num //= 2
print(num)  # 输出 2
1
2
3
%
取余数
num = 5
num %= 2
print(num)  # 输出 1
1
2
3
参考: https://blog.csdn.net/data8866/article/details/62884210/
补充
而在C/C++中,"/ " 算术运算符的计算结果通常是根据参与运算的两边的数据决定的, 比如:
任意一边是浮点数, 结果就是浮点数
两边都是整型, 结果就是整型
```<!--autointro-->

机器学习中如何保存已经训练好的模型

机器学习中如何保存已经训练好的模型

当我们训练好一个model后,下次如果还想用这个model,我们就需要把这个model保存下来,下次直接导入就好了,不然每次都跑一遍。
sklearn官网提供了两种保存model的方法:

1.使用python自带的pickle

from sklearn.ensemble import RandomForestClassifier
from sklearn import datasets
import pickle
#方法一:python自带的pickle
(X,y) = datasets.load_iris(return_X_y=True)
rfc = RandomForestClassifier(n_estimators=100,max_depth=100)
rfc.fit(X,y)
print(rfc.predict(X[0:1,:]))
#save model
f = open('saved_model/rfc.pickle','wb')
pickle.dump(rfc,f)
f.close()
#load model
f = open('saved_model/rfc.pickle','rb')
rfc1 = pickle.load(f)
f.close()
print(rfc1.predict(X[0:1,:]))

2.使用sklearn中的模块joblib

使用joblib模块更加的简单了,核心代码就两行


from sklearn.ensemble import RandomForestClassifier
from sklearn import datasets
from sklearn.externals import joblib
#方法二:使用sklearn中的模块joblib
(X,y) = datasets.load_iris(return_X_y=True)
rfc = RandomForestClassifier(n_estimators=100,max_depth=100)
rfc.fit(X,y)
print(rfc.predict(X[0:1,:]))
#save model
joblib.dump(rfc, 'saved_model/rfc.pkl')
#load model
rfc2 = joblib.load('saved_model/rfc.pkl')
print(rfc2.predict(X[0:1,:]))
```<!--autointro-->

安装youtube-dl并下载YouTube视频


C:\Users\JOSE>pip install youtube-dl
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting youtube-dl
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/40/93/65c208f51895f74bbfea1423974c54fff1d1c4e9a97ebee1011b021554b8/youtube_dl-2021.12.17-py2.py3-none-any.whl (1.9 MB)
---------------------------------------- 1.9/1.9 MB 3.0 MB/s eta 0:00:00
Installing collected packages: youtube-dl
Successfully installed youtube-dl-2021.12.17
WARNING: There was an error checking the latest version of pip.
C:\Users\JOSE<!--autointro-->

安装paddlepadlle

conda create -n PaddleEnv
conda activate PaddleEnv
conda install pip
python -m pip install paddlepaddle==2.4.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install --upgrade paddlenlp

安装cpu版本的paddlepaddle报gpu相关错误

ValueError: The device should not be 'gpu', since PaddlePaddle is not compiled with CUDA


上面的修改不起作用,把默认配置中设备改成cpu就行了