一、引言
今天用用文本编辑器EditPlus运行一个Python程序,明明它存在,却遇到文件不存在的错误:C:\Python3119\python.exe: can't open file 'D:\\test\\12347_╦∩╚2_03.py': [Errno 2] No such file or directory这很奇怪,之前用EditPlus运行其它Python程序都运行得好好的,为什么这次就不行了呢?经过反复研究,终于找到了原因和解决办法,特此记录,免得遗忘。如有使用EditPlus运行Python程序的读者朋友也可以参考一下。环境:64位Win 10中文版 + 64位Python 3.8.8 64位Win 10中文版 + 64位Python 3.11.9 64位Win 10中文版 + 64位Python 3.12.0《Python程序设计(基于计算思维和新文科建设)》,ISBN:9787121435577,胡凤国,电子工业出版社,2022年6月。本书是电子工业出版社在国内较早采用纸质版+电子版的创新图书发行模式的第一次尝试。本书是这套创新图书的纸质版部分,与之内容互补的电子版图书将稍后出版。基础篇介绍Python程序设计的入门知识,共12章,包括:⑵ Python软件的安装和Python程序运行;⑶ Python的基本概念(对象、数据类型、表达式、内置函数);排错篇总结初学者常遇到的错误并介绍程序调试方法,包含2章:与本书内容互补的电子版图书包含文本篇和应用篇两部分:文本篇:介绍字符集、编码和文本文件读写的知识,包含了对国家规范《通用规范汉字表》8105个汉字当中难以输入和难以显示的汉字的处理。应用篇:介绍Word、Excel、PPT、PDF、图片等常用办公文件的处理,是大家提高办公和科研效率的好帮手。本书配套有详细的PPT和教学大纲,还有全部例题的程序代码和绝大部分思考题的程序代码。本书配套PPT里面还加入了配套电子版图书中的部分内容,比如字符集和编码,不同编码的文本文件的读写,Word、Excel、PPT、PDF等一些常用办公文件的读写。1、大学文科生,可选本书当Python教材或自学Python的参考书。2、大学理工科学生,可选本书当自学Python的参考书。可拿本书当工具书,本书的配套程序会为您节省效率,在当前大数据和新文科的背景下,本书可以为相关领域的量化研究提供技术支持。本书配套的电子版图书中的编码和文本处理知识也可以作为理工科教师和科研人员处理文本数据的参考资料之一,毕竟专门开辟章节介绍国家标准《通用规范汉字表》汉字处理的程序设计图书并不多见。
本书有专门的海龟画图章节,有大量的有趣数学题目,可以培养学生的计算思维,适合对编程感兴趣的中小学生阅读,也适合打算让娃参加编程辅导班的家长朋友参考。本书在各大实体书店和网店均有销售。京东、天猫、当当的购买渠道如下(可扫码直达购买页面)。压缩包里面无论是用WinRAR打开看还是用Windows资源管理器打开看都是一个是Python程序文件:12347_孙三_03.py解压缩之后,得到文件名是 12347_╦∩╚²_03.py 的Python程序文件,放到了 D:\test 目录下。为什么要用Python程序解压缩呢?因为学生提交的做也太多了,手动解压缩费时费力,绝对不是Pythoner的行事风格。没想到解压之后文件名乱码了,乱就乱吧,我的目的是运行程序看到结果。用EditPlus调用Python3.8运行程序,报错如下:报错信息也是个乱码字符串。
用EditPlus调用Python3.11运行程序,报错如下:报错信息不乱码了,但是它说找不到文件。
不过,在Windows的命令行窗口中运行该程序是没问题的(文件名需要手动复制出来备用),在IDLE中运行该程序也是没问题的。
我们已经知道,EditPlus运行Python程序本质上就是命令行运行。那么,既然命令行运行和IDLE运行都没有问题,那么,EditPlus运行为什么会出问题呢?
五、EditPlus运行Python程序出错原因及解决办法正确复制出来的文件名:12347_╦∩╚²_03.pyEditPlus运行的文件名:12347_╦∩╚2_03.py
看到没有,两个文件名不一样,正确的文件名里面是一个类似上标的小2,EditPlus运行的文件名里面却改成了半角数字2。文件名都给人家搞错了,自然是运行失败。解决办法:
单纯从EditPlus的角度看,目前暂时没有解决办法。它的主业只是一个编辑器,简单配置一下能让它运行Python程序,但这个功能我们无法修改,它运行文件时自己会篡改本来就乱码的文件名,我们真的是没有办法。我们完全可以放弃用EditPlus运行Python程序,换别的IDE。不过,EditPlus经过调教之后可以输入很短的字符串自动出现大端预制的Python代码,这个功能还挺好用,一时还舍不得不用它。
从另一个角度考虑,如果我们能确保Python程序文件名不乱码,它运行Python程序就不会报错了。那么,我们就需要改进我们的解压缩zip文件的程序。让它解压出来的文件名不乱码。我们用Python 3.8和Python 3.11运行,解压缩出来的文件名都是乱码,如果用Python 3.12或更高版本的Python来运行该程序,解压缩出来的文件名就不乱码,而是正常的 12347_孙三_03.py 。所以,换用Python 3.12来运行解压缩程序,就能在不放弃使用EditPlus的前提下解决本文的问题。六、总结与讨论
1、关于简单配置EditPlus来运行运行Python程序,以及设置预制代码片段,可以参考如何文章:
《如何用Editplus来编辑和运行Python程序》
2、解压缩zip文件的Python程序,在不同版本的Python环境中居然结果不一样,此前本号也有文章提到这个问题,这里在玩EditPlus的时候居然又遇到了。
我们还是希望我们的解压缩zip文件的Python程序能够在任何版本的Python环境中运行。如何写一个通用的解压缩zip文件的程序呢?同学们可以探索一下,必要时可以请AI来帮忙。
由于本号文章以辅助教学为主,笔者不建议自己的学生直接拿代码运行,而是建议在理解了思路之后自己敲代码来加深印象,所以本号一般不直接贴代码。如果读者朋友有需要本文或本号其它以 nihao2021year 的名义推送的文章的代码,请关注本号,直接加笔者微信联系,尽量别给公众号留言(查看不及时,经常漏看一些留言,时间长了无法回复)。欢迎关注微信公众号“语和言”,本公众号将不定期发布对图书《Python程序设计(基于计算思维和新文科建设)》中的Python知识点进行解读和补充的内容。语和言公众号还有读者交流群,读者朋友可以入群一起讨论问题。欢迎跟图书《Python程序设计(基于计算思维和新文科建设)》的作者胡凤国老师进行交流,电邮:cuchufengguo@163.com。七、图书目录
图书《Python程序设计(基于计算思维和新文科建设)》目录如下(手机端可以用手指上下滑动下面灰色区域的文字来查看全部目录,电脑端可以用鼠标滚动滚轮或拖动下面文本框右边的滚动条来浏览全部目录):
8.2.4 关于元素可比较的有序序列类对象的通用操作10.3.3 用上下文管理语句with来管理文本文件读写12.12.1 datetime标准库定义的常用类参考文献