设计网站的公司名称,苏州建设人才网官网,设计师推荐网站欣赏,各大网站网络推广的收费本文将带你了解软件测试技术之如何用python在Windows系统下#xff0c;生成UNIX格式文件#xff0c;希望对大家学测试技术有所帮助如何用python在Windows系统下#xff0c;生成UNIX格式文件平时测试工作中#xff0c;少不了制造测试数据。最近一个项目#xff0c;我就需要…本文将带你了解软件测试技术之如何用python在Windows系统下生成UNIX格式文件希望对大家学测试技术有所帮助如何用python在Windows系统下生成UNIX格式文件平时测试工作中少不了制造测试数据。最近一个项目我就需要制造一批可在UNIX下正确读取的文件。为确保这批文件能从FTP下载成功开发叮嘱我“文件中凡是遇到换行换行符必须是UNIX下的LF而不是Dos\Windows下的CRLF。”换行在普通文档编辑中就是按下“Enter”键。在编写代码时就是在文件中写入字符串”\n”。但用python命令w在文件写入换行”\n”以后由于是Windows系统的原故会默认把”\n”实际保存为”\r\n”。对于Windows下为何是”\r\n”这里引用网上的解释因为Windows采用了传统的英文打字机模式它在换行时需分解成两步——回车”\r”和换行”\n”。回车(carriage return,CR)是将小车退回至起点相当于把光标从行尾切换到行首换行(line feed,LF)是将小车切换到下一行这样的组合操作就完成了另起一行的目的。我们首先确认Windows下的换行是否真的是CRLF把文件用任意一款文本编辑器(以Notepad为例)打开在编辑器的菜单栏中找到“视图”菜单点击“显示符号”勾选“显示所有字符”就可以显示换行符了。我们在下图中可以看到在Windows系统下文件中的换行符确实是CRLF。如何把CRLF变成LF呢开发给出了一个解决方案。Method A在Notepad界面右下角双击当前文件格式的描述:“Dos\Windows”点击弹框中的“转换为UNIX格式”最后保存文件。此时可以看到文件每行结尾都已经展示为“LF”了。虽然整个转换过程极为简单但要是有一大批这样的文件需要一个个手动转换我不禁感慨光(xīn)阴(hǎo)虚(lèi)度韶(bù)光(xiǎng)易(dòng)逝。在表达抗议后开发表示可以优化此方法即使用文本编辑器的替换功能Method B:使用Notepad打开原文件按下组合键CtrlF后在弹框中选择“替换”栏在“查找目标”输入框填写“\r\n”“替换为”输入框填写“\n”“查找模式”选择“扩展(\n\r\t\0\x...)”点击“替换所有打开文件”后一一保存文件即可。然而把所有的文件保存一遍并不能提升测试的幸福感。我追求的是尽量减少重复而繁重的手工劳动解放双手高效测试类似这样的能力瓶颈从我进入测试行业开始就不断挤占着我的业余时间。为了更好的提高自己系统地学习测试开发所必需的技能我报名参加了吴老的测试开发培训班。截至目前吴老已经授课两个多月我从无到有学习了很多基本的python开发知识也偶尔能接触到一些巧妙的编程思维。正好这次的数据准备给我提供了一个实践的契机让我运用最近学习的文件操作知识体验了一次局部自动化的乐趣。下面给大家分享一下我这次愉快的实践内容由于真实的测试数据略有复杂这里就用简单的两行数字来举个栗子。首先按上课所讲的内容依葫芦画瓢使用Notepad创建文件并写入文本内容1 #coding:utf-8(设定文件编码格式)2 import os3 import time45 #切换到创建文件目录6 os.chdir(rC:\Study\Chestnuts\01data)78 #新建创建文件函数9 def create_file():1011 #构造文件名以“年月日”为文件名的.dat文件12 ttime.localtime()13 file_nametime.strftime(%Y-%m-%d,t).dat14 #创建并打开文件15 fpopen(file_name,w)16 #写入文件内容17 fp.writelines(12345\n)18 fp.writelines(67890\n)19 #关闭文件20 fp.close()2122 #调用函数23 create_file()如上图所示执行脚本就会生成一份原始文件不过在两行内容的末尾换行符均显示为CRLF接下来就是转换的工作了。Method C对原文件进行格式转换如果是对现有的文件进行处理可以使用Notepad再编写一个转换的脚本。参考网上的方法使用rU方式读取文件内容使用wb方式写入文件内容如下图所示1 #coding:utf-82 import os34 #文件路径准备5 routerC:\Study\Chestnuts\01data67 #遍历路径下目录文件夹文件8 for root,dirs,files in os.walk(route):9 #遍历文件10 for name in files:11 #归纳文件名特征12 if name[-3:]dat:13 #拼接文件名(目录文件名称)14 catalogos.path.join(root,name)15 #把所有行分割符替换为换行符\n返回.16 fpopen(catalog,rU)17 #读取文件并保存18 stringsfp.read()19 fp.close()20 #使用二进制写文件21 fp1open(catalog,wb)22 fp1.seek(0)23 fp1.write(strings)24 fp1.flush()25 fp1.close()执行这个脚本就能对现有文件格式进行转换得到换行符是LF的文件了。结果是对了但执行两个脚本来生成一份最终文件难免让我觉得还不够简单。我分析了以上文件转换的代码发现关键步骤是使用二进制(wb)方式写入文件。Method D原文件使用二进制方式写入既然这样不如在一开始就使用二进制写文件一步到位并且只需把源代码中写入方式(w)变成二进制写入(wb)方式即可。你看仅仅添加了一个字母就省去了十几行代码还达到了预期目标可谓一举多得#coding:utf-8(设定文件编码格式)import osimport time#切换到创建文件目录os.chdir(rC:\Study\Chestnuts\01data)#新建创建文件函数def create_file():#构造文件名以“年月日”为文件名的.dat文件ttime.localtime()file_nametime.strftime(%Y-%m-%d,t).dat#创建并打开文件fpopen(file_name,wb)#写入文件内容fp.writelines(12345\n)fp.writelines(67890\n)#关闭文件fp.close()#调用函数create_file()窥一斑而见全豹以上的代码优化提醒我编程时需要多思考理清逻辑最终找到达成目标的最佳方案。在练习编写代码时不仅要认真分析需求分解步骤也要注意积累好的方法进行沉淀这也是我写下本文的目的所在。如果大家在测试工作中也遇到了类似的困难觉得自己能力欠缺期望通过自己编写代码解决问题欢迎大家咨询我或者吴老。可以加入我们的“光荣之路python群(457561756)”进行提问也可以来吴老的测试开发培训班一起学习。为了更全面的提升为了更丰厚的待遇也为了更美好的生活让我们在光荣之路一起奋斗本文由职坐标整理并发布希望对同学们有所帮助。了解更多详情请关注职坐标软件测试之测试技术频道