我是小鱼,今天是2021年8月31日,这是我学习python的第一篇文章,用于记录在python学习中遇到的问题。
环境:Pycharm, terminal生成.exe文件
项目:书《Python编程 – 从入门到实践》中第12-14章《外星人入侵》的游戏
问题描述,在Pycharm中运行正常,生成exe文件也成功了。但是双击运行时,出现下图错误
“Failed to execute script’alien_invasion”due to unhandled exception: expected str, bytes or os. PathLike object, not BytesIO

在CSDN上搜索,有个帖子说,是因为使用 pyinstaller -w -F 产生的,换成pyinstaller -c -F就好。
当我更换命令后,不再出现上面报错框,但是出现一个黑色的框,一闪而过。程序依然无法使用。拼手速把一闪而过的黑框截屏下来。如下:

从上面的提示里找到对应文件, 第14行,如下:

这里本身是有个报警,但是在pycharm里运行是没有影响的。因为我对pygame没有那么熟,只是按照说上说sysfont第一个参数写None, 后来的解决方法是改成”arial”,因为我确定系统里是有这个字体的。
报警解除后再次生成.exe,运行再次出错。用-c命令快速截图看原因

找到相应的行,如下:

第14行是一个图片的相对位置,生成的.exe文件是放在dist文件夹下的,这个在别人的帖子里提到过,因为是相对位置,所以.exe文件必须要与images文件夹在同一个目录下。移动后问题完美解决。
简单总结一下,-w的命令虽然能出提示框,但是没有具体的错误位置,-c的命令可以有具体位置,但是出现的太快。这两个命令都很有用。另外,在pycharm中尽量不要有报警,即使可以在pycharm中运行,但是不能保证能生成可执行文件。
第一次自己生成了一个小游戏。纪念一下。
Original: https://blog.csdn.net/yuxingdeyun/article/details/120013000
Author: yuxingdeyun
Title: Pycharm, 生成可执行文件,Unhandled exception in script报错
相关阅读
Title: python绘制复杂表格_Matplotlib绘制表格
emememem……
今天有个需求,需要读取两个csv文件然后依据数据的差异动态绘制出表格,然后搜了一圈利用Python的攻略,发现都无甚用,还是最终回到了Matplotlib的怀抱,发现网上讲解利用Matplotlib绘制表格的博文太少(PS:浪费了我很多时间),于是以本文记之。Pandas 中文手册www.pypandas.cn

Python 可以利用Pandas来读取csv格式的文件,建议标准化csv文件(第一行为表头,或者省略表头),Pandas可以自动识别出数据的格式:obj(string),float,int
import pandas as pd
csv_cur = pd.read_csv(csv_cur_path,header=0) # 可以手动指定表头行
- 设置图表的尺寸和分辨率,figsize长宽大小,dpi像素分辨率
plt.figure(figsize=(16, 8), dpi=100)
- 设置表格的行总数,framedata通过iloc来索引每一个元素
row_len = len(csv_cur.iloc[:, 0])
- 设置表头,framedata通过columns来获得表头行
col_list = list(csv_cur.columns)
- 表格具体内容需要通过cellText来设置,每一个选项都是list[],表格从左上角开始定义(0,0,),包括表头,因此当设置colLabels时,表格内容设置需要避免覆盖第1行
表格的内容从第一行
for i in np.arange(row_len + 1):
for j in np.arange(col_len):
if i == 0:
the_table[i, j].get_text().set_fontsize(font_size)
the_table[i, j].get_text().set_color((0, 0, 0))
else:
the_table[i, j].get_text().set_fontsize(font_size)
the_table[i, j].get_text().set_color(table_colors[i – 1][j])
the_table = plt.table(cellText=table_vals,
cellLoc=’center’,
colWidths=col_widths,
colLabels=col_labels,
loc=’center’)
- 由于表格内容和字体需要手动定义,因此需要手动指定表的列宽
col_len = len(col_list)
col_width = 0.65 / col_len
col_widths = [col_width * 1.3]
for i in np.arange(col_len – 1):
if csv_diff.iloc[0, i + 1] == 0:
col_widths.append(col_width * 0.7)
else:
col_widths.append(col_width)
- 关掉图表的坐标轴并保存图片
plt.axis(‘off’)
result = “visualize_slam_result_table.png”
plt.savefig(result)
plt.show()
Original: https://blog.csdn.net/weixin_33953395/article/details/113674472
Author: 多环芳烃
Title: python绘制复杂表格_Matplotlib绘制表格
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/342131/
转载文章受原作者版权保护。转载请注明原作者出处!