前阵子临时要批量整理本地的文本文件,到处搜python怎么写脚本,网上的说法乱糟糟的,有的上来直接贴一大段代码,有的讲一堆底层原理,看得头都发懵,折腾好半天才捋顺自己能用的路子。
最先卡在环境这块。之前一直以为装个编辑器就能动手写,打开记事本敲完代码,保存之后双击文件,黑窗口闪一下就消失,啥结果都看不到。反复试了好几次,换了保存格式,改了文件名后缀,还是一样的情况。后来才反应过来,系统里根本没有装好python解释器,文件只是单纯的文本,没办法被识别执行。去官网下安装包的时候,还漏掉勾选添加到系统PATH的选项,装完在cmd里敲python指令,直接提示不是内部命令,又卸掉重装了一遍。
选编辑器这块也花了不少时间。一开始图省事,就用系统自带的记事本,写短点的内容还好,代码一多,没有高亮提示,括号配对很容易写错,少打一个冒号,整个脚本直接跑崩。之后换了轻量的代码编辑器,代码颜色会区分开,写错的地方还会有波浪提示,排查起来省心很多。脚本文件保存的时候,后缀要改成py,文件名里面尽量不用中文和空格,不然偶尔会出现莫名其妙的报错,这个是我反复踩过的点。
写第一份能用的脚本的时候,目标很简单,就是读取文件夹里面所有txt文档,把里面空行全部删掉,再另存一份新文件。先是一点点搭基础结构,导入需要的模块,写路径读取的部分,循环遍历文件,逐行读取内容,判断行内容是不是空白,符合条件就写入新文件。写完第一版运行,发现只能处理和脚本放在同一个文件夹里的文件,放在别的目录就识别不到,只能再调整路径写法,换成绝对路径去测试。运行的时候,控制台会抛出报错信息,报错行会标出来,顺着提示往回找,很多时候就是缩进不对,python对缩进的要求很严,多一个空格少一个空格,结果完全不一样。
这只是我的个人感受,不是标准答案。
脚本写完之后,有两种运行方式。一种是打开cmd,切换到脚本所在的文件夹,输入python加上脚本文件名回车执行,这种方式运行完窗口不会自动关掉,能看清打印出来的提示和报错。另一种就是直接双击py文件,适合写完稳定之后直接用,调试阶段我基本不会用这个方式,一闪而过的窗口根本来不及看哪里出问题。有时候脚本跑起来之后,处理大量文件会花很久,中途想停下来,直接在控制台按ctrl+c就能终止运行,不会一直卡死。
写的时候不用一次性把所有功能都堆上去。
我习惯先写最小可运行的片段,先测试能不能正常读取文件,确认没问题,再加过滤空行的逻辑,全部跑通之后,再考虑要不要加上自动新建输出文件夹这类附加功能。有一次贪心,一次性加了好几个功能模块,写完一堆报错,分不清是哪一块代码出问题,来回排查耗费了特别久。之后就慢慢养成习惯,改动一小段,就运行一次,确认没有异常再往下写。遇到不懂的语法,单独新建一个简单的测试脚本,只写那几行代码单独验证,不会混在主脚本里面。
还有一个细节,脚本里用到的文件路径,windows系统里面反斜杠容易出问题,要么写成双反斜杠,要么在字符串前面加r,不然会被当成转义字符处理,路径直接失效。最开始没留意这个,明明路径复制的一模一样,程序一直找不到目标文件,卡了快二十分钟才找到原因。
到现在我写的脚本都不算复杂,大多是用来处理重复的文件操作,没有复杂的算法,也没有图形界面。写脚本这件事,对我来说就是把重复的手动操作交给程序跑,不用追求写得多精巧,能稳定完成自己当下想要做的事就够了。有时候写完隔几天再打开,自己都看不懂当时写的逻辑,慢慢开始在代码里面加简短注释,记下来这一段是干嘛的,不用写很长,方便之后回看。
关掉编辑器的时候,桌面上还留着几份测试用的txt文档,刚跑出来的处理结果静静躺在文件夹里。那天晚上没有接着往下写新功能,直接合上电脑去倒水了。