Python封装——如何把python代码打包成一个可执行的,2024年最新字节跳动软件测试面试凉凉经

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文


Pyinstaller是啥

https://pyinstaller.org/en/stable/

在这里插入图片描述

Pyinstaller可以打包Win、Linux、MacOS下的python程序,在什么环境下打包的就是什么平台的程序。相对来看,Pyinstaller打包的程序体积大、安全性稍差(容易反编译),但是上手相对简单一些。

入门案例:Hello World 封装

1.hello world封装

安装:cmd下输入pip install Pyinstaller(P大写)
清华大学镜像

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Pyinstaller

在这里插入图片描述

编程:加入input()解决闪退问题

在这里插入图片描述

print(“hello world”)
input(“输入任意键结束”)

2.封装步骤

1.新建文件夹放入hello.py文件
2.按住shift点鼠标右键选择

在这里插入图片描述

3.输入

在这里插入图片描述

pyinstaller -F hello.py

4.完成后打开dist文件

在这里插入图片描述

运行的效果如下

在这里插入图片描述

pyinstaller的参数详解

在这里插入图片描述

pyinstaller -F -w --icon=xxx.ico main.py –noconsole

  • -F表示生成单exe可执行文件,-w表示窗体程序,
  • –icon是设置exe的显示图标,'main.py’是程序的入口,
  • –noconsole 表示不展示cmd窗口

在这里插入图片描述

PyInstaller 支持的常用选项
-h,–help产生单个的可执行文件
-D,–onedir产生一个目录(包含多个文件)作为可执行程序
-a,–ascii不包含 Unicode 字符集支持
-d,–debug产生 debug 版本的可执行文件
-w,–windowed, --noconsolc指定程序运行时不显示命令行窗口(仅对 Windows 有效)
-c,–nowindowed, --console指定使用命令行窗口运行程序(仅对 Windows 有效)
-o DIR,–out=DIR指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件
-p DIR,–path=DIR设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径
-n NAME, --name=NAME指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字

比如:加个icon图标

改进后:pyinstaller -F --icon=subway.ico hello.py

在这里插入图片描述

进阶案例:读取.dat文件,计算绘图并保存结果

1.dat文件读取和处理

import numpy as np
import pandas as pd
import os

列出当前目录下所有的文件

files = os.listdir(“.”)
for filename in files:
portion = os.path.splitext(filename)

如果后缀是.txt

if portion[1] == “.txt”:

重新组合文件名和后缀名

newname = portion[0] + “.csv”
os.rename(filename,newname)
a=pd.read_csv(‘F:\python\loadc.csv’,sep = ‘,’,encoding = ‘gbk’)

import pandas as pd
import numpy as np
file_path = “./loadc.dat”
df = pd.read_csv(file_path,encoding = ‘gbk’)

2.整体的流程和代码

在这里插入图片描述

在这里插入图片描述

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
#########################################################
pd.set_option(‘display.width’, 1000)#加了这一行那表格的一行就不会分段出现了
pd.set_option(‘display.max_columns’, None)
pd.set_option(‘display.max_rows’, None)
plt.rcParams[‘font.sans-serif’] = ‘SimHei’
plt.rcParams[‘axes.unicode_minus’] = False ## 设置正常显示符号
###########################################################
file_path = “./loadc.dat”
df = pd.read_csv(file_path,encoding = ‘gbk’)
file_path1 = “./thrustweight.dat”
df1 = pd.read_csv(file_path1,encoding = ‘gbk’)
##########################################################

推力和载荷数据记录的处理

#转换成只有数据的列表
a=df.iloc[1,:].str.split(“\t”).tolist()

print(df.loc[“预估载荷上下界”])

load_list1=[i for j in a for i in j ]
load_data1=list(map(float,load_list1[1:]))

load_list=[]
for k in range(1,df.shape[0]):
a = df.iloc[k, :].str.split(“\t”).tolist()
load_list1 = [i for j in a for i in j]
load_data1 = list(map(float, load_list1[1:]))#输出不带米数的数据
load_list.insert(k-1, load_data1)

#装换成DataFrame数据
load_data_dataframe=pd.DataFrame(load_list,columns=[“thrust_min”,“thrust_max”,“torque_min”,“torque_max”])

##########################################################

占比数据的处理

b=df1.iloc[1,:].str.split(“\t”).tolist()
load_rate1=[i for j in b for i in j ]
load_rate=list(map(float,load_rate1[:]))
cutter_thrust_rate1=load_rate[0]/100
shield_friction_rate1=load_rate[1]/100
equipment_traction_rate1=load_rate[2]/100
###########################################################
#输出刀盘推力的预估上界和下界
cutter_thrust_rate=pd.Series([cutter_thrust_rate1]*800)
cutter_thrust_load=load_data_dataframe.mul(cutter_thrust_rate,axis=0)
shield_friction_rate=pd.Series([shield_friction_rate1]*800)
shield_friction_load=load_data_dataframe.mul(shield_friction_rate,axis=0)
equipment_traction_rate=pd.Series([equipment_traction_rate1]*800)
equipment_traction_load=load_data_dataframe.mul(equipment_traction_rate,axis=0)

print(load_data_dataframe)

print(cutter_thrust_load)

###############################################################
#画图
plt.figure(figsize=(20,8),dpi=80)#设置窗口大小
x=range(800)
y1=cutter_thrust_load[“thrust_min”]
y2=cutter_thrust_load[“thrust_max”]

y3=cutter_thrust_load[“torque_min”]

y4=cutter_thrust_load[“torque_max”]

y3=shield_friction_load[“thrust_min”]
y4=shield_friction_load[“thrust_max”]
y5=equipment_traction_load[“thrust_min”]
y6=equipment_traction_load[“thrust_max”]

plt.plot(x,y1,color=“r”,linestyle=“–”,linewidth=3,label=“刀盘推力下界”)
plt.plot(x,y2,color=“r”,linewidth=3,label=“刀盘推力上界”)

plt.plot(x,y3,color=“y”,linewidth=3,label=“刀盘扭矩下界”)

plt.plot(x,y4,color=“k”,linewidth=3,label=“刀盘扭矩上界”)

plt.plot(x,y3,color=“g”,linestyle=“–”,linewidth=3,label=“盾构摩擦力下界”)
plt.plot(x,y4,color=“g”,linewidth=3,label=“盾构摩擦力上界”)
plt.plot(x,y5,color=“y”,linestyle=“–”,linewidth=3,label=“设备牵引力下界”)
plt.plot(x,y6,color=“y”,linewidth=3,label=“设备牵引力上界”)

plt.legend(loc=“best”,fontsize=‘x-large’)
plt.tick_params(labelsize=13)
plt.xticks(range(800)[::20],x[::20])

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

plt.xticks(range(800)[::20],x[::20])

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-cA9NSvr9-1713354443787)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值