python修改文件格式为unix_软件测试技术之如何用python在Windows系统下,生成UNIX格式文件...
本文将带你了解软件测试技术之如何用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++打开原文件,按下组合键Ctrl+F后,在弹框中选择“替换”栏,在“查找目标”输入框填写“\r\n”,“替换为”输入框填写“\n”,“查找模式”选择“扩展(\n\r\t\0\x...)”,点击“替换所有打开文件”后,一一保存文件即可。
然而把所有的文件保存一遍,并不能提升测试的幸福感。我追求的是尽量减少重复而繁重的手工劳动,解放双手,高效测试!类似这样的能力瓶颈,从我进入测试行业开始,就不断挤占着我的业余时间。为了更好的提高自己,系统地学习测试开发所必需的技能,我报名参加了吴老的测试开发培训班。
截至目前,吴老已经授课两个多月,我从无到有,学习了很多基本的python开发知识,也偶尔能接触到一些巧妙的编程思维。正好这次的数据准备,给我提供了一个实践的契机,让我运用最近学习的文件操作知识,体验了一次局部自动化的乐趣。
下面给大家分享一下我这次愉快的实践内容,由于真实的测试数据略有复杂,这里就用简单的两行数字来举个栗子。
首先按上课所讲的内容,依葫芦画瓢,使用Notepad++创建文件并写入文本内容:
1 #coding:utf-8(设定文件编码格式)
2 import os
3 import time
4
5 #切换到创建文件目录
6 os.chdir(r"C:\Study\Chestnuts\01data")
7
8 #新建创建文件函数
9 def create_file():
10
11 #构造文件名:以“年月日”为文件名的.dat文件
12 t=time.localtime()
13 file_name=time.strftime("%Y-%m-%d",t)+".dat"
14 #创建并打开文件
15 fp=open(file_name,'w+')
16 #写入文件内容
17 fp.writelines("12345\n")
18 fp.writelines("67890\n")
19 #关闭文件
20 fp.close()
21
22 #调用函数
23 create_file()
如上图所示,执行脚本就会生成一份原始文件,不过在两行内容的末尾,换行符均显示为CRLF,接下来就是转换的工作了。
Method C:对原文件进行格式转换
如果是对现有的文件进行处理,可以使用Notepad++再编写一个转换的脚本。参考网上的方法,使用rU方式读取文件内容,使用wb方式写入文件内容,如下图所示:
1 #coding:utf-8
2 import os
3
4 #文件路径准备
5 route=r"C:\Study\Chestnuts\01data"
6
7 #遍历路径下目录,文件夹,文件
8 for root,dirs,files in os.walk(route):
9 #遍历文件
10 for name in files:
11 #归纳文件名特征
12 if name[-3:]=='dat':
13 #拼接文件名(目录+文件名称)
14 catalog=os.path.join(root,name)
15 #把所有行分割符替换为换行符\n返回.
16 fp=open(catalog,"rU+")
17 #读取文件并保存
18 strings=fp.read()
19 fp.close()
20 #使用二进制写文件
21 fp1=open(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 os
import time
#切换到创建文件目录
os.chdir(r"C:\Study\Chestnuts\01data")
#新建创建文件函数
def create_file():
#构造文件名:以“年月日”为文件名的.dat文件
t=time.localtime()
file_name=time.strftime("%Y-%m-%d",t)+".dat"
#创建并打开文件
fp=open(file_name,'wb+')
#写入文件内容
fp.writelines("12345\n")
fp.writelines("67890\n")
#关闭文件
fp.close()
#调用函数
create_file()
窥一斑而见全豹,以上的代码优化,提醒我编程时需要多思考,理清逻辑,最终找到达成目标的最佳方案。在练习编写代码时,不仅要认真分析需求,分解步骤,也要注意积累好的方法进行沉淀,这也是我写下本文的目的所在。
如果大家在测试工作中,也遇到了类似的困难,觉得自己能力欠缺,期望通过自己编写代码解决问题,欢迎大家咨询我或者吴老。可以加入我们的“光荣之路python群(457561756)”进行提问,也可以来吴老的测试开发培训班一起学习。为了更全面的提升,为了更丰厚的待遇,也为了更美好的生活,让我们在光荣之路一起奋斗!
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标软件测试之测试技术频道!
python修改文件格式为unix_软件测试技术之如何用python在Windows系统下,生成UNIX格式文件...相关推荐
- windows上的python能否在unix上使用_怎么用python在Windows系统下,生成UNIX格式文件
在Windows下换行时,有两个字符:回车(/r)和换行(/n).但在Linux下,只有一个换行(/n)可使用unix2dos和dos2unix命令进行格式的转换: 参数: -k 保持输出文件和输入文 ...
- python将字符串s和换行符写入文件fp_软件测试技术之如何用python在Windows系统下,生成UNIX格式文件...
本文将带你了解软件测试技术之如何用python在Windows系统下,生成UNIX格式文件,希望对大家学测试技术有所帮助 如何用python在Windows系统下,生成UNIX格式文件 平时测试工作中 ...
- python将文件转成linux格式,怎么用python在Windows系统下,生成UNIX格式文件
如何用python在Windows系统下,生成UNIX格式文件 平时测试工作中,少不了制造测试数据.最近一个项目,我就需要制造一批可在UNIX下正确读取的文件.为确保这批文件能从FTP下载成功,开发叮 ...
- 如何利用python在一个文档里xie'ru_如何用python在Windows系统下,生成UNIX格式文件...
平时测试工做中,少不了制造测试数据.最近一个项目,我就须要制造一批可在UNIX下正确读取的文件.为确保这批文件能从FTP下载成功,开发叮嘱我:"文件中凡是遇到换行,换行符必须是UNIX下的L ...
- chatgpt赋能python:Python开立方根:什么是立方根,如何用Python计算?
Python开立方根:什么是立方根,如何用Python计算? 如果您正在寻找一种简单的方法来计算任何数字的立方根,那么Python可以为您提供答案.立方根是指一个数字的三次方根,也就是说,要找到一个数 ...
- Windows系统下基于开源软件的多物理场仿真实践技术
目录 专题一:多物理场有限元方法 专题二:前处理 专题三:单物理场举例 专题四:多物理场耦合 专题五:编程进阶 随着计算机技术的发展,计算机仿真技术日益成为继实验和理论之后的第三种重要研究和设计手段. ...
- windows系统下批量修改文件后缀
在Windows系统下批量修改文件后缀要用到 ren命令.在使用win10系统的朋友们肯定会发现系统会给自己推荐一些开机锁屏壁纸, 今天就用这个命令批量保存这些壁纸. 这些壁纸文件目录在: C:\Us ...
- windows系统下的python环境的搭建
windows系统下如何搭建python环境呢? 方法一: 首先,去python的官方网站上下载python 我就随便选择了一个最新版,你们需要特定版本的就下载特定版本的 链接地址:https://w ...
- python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...
本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf- ...
最新文章
- IBM X3650 M2 BR10i卡的阵列配置方法
- Flash XSS 漏洞详解 根治的好办法
- select * from mys where id=2;
- [swift] Async
- Python3字符串
- 联想杨元庆:未来五年研发总投入将会超过1000亿人民币
- 注册php tp5,TP5登录注册
- jdk jre jvm的关系
- Qt GUI编程 基础入门
- 西柚SWPU新生赛(场外同步赛)miscAK 别的在混(
- STM32定时器输出pwm波
- 月薪过万的90后,都是做什么职业的?
- 利用jsp内置对象实现的简易聊天室
- 仅将人脑视为预测机器,人类文明会出什么问题
- 2021最新支持APP|公众号聊天在线客服程序源码
- 申宝在线炒股北交所新股表现抢眼
- DMIPS, TOPS, FLOPS, FLOPs, GMACs, FMA
- C#结合天敏VC4000采集卡视频监控
- uni组件uni-search-bar默认值
- 【xilinx xfopencv】Vivado_HLS_ov5640_rgb2gray_hdmi 第一部分
热门文章
- SpringBoot 异常回滚 事务的使用___Springboot @Transactional 事务不回滚
- 在java中jvm目录_JVM具体在哪个文件夹下的
- ++实现 ipv6数据报_IPV6报文格式和IPV4有什么区别?
- 计算机桌面壁纸怎样拉伸,win10桌面壁纸怎么拉伸?手把手教你拉伸win10桌面壁纸的方法...
- c#水晶报表连接mysql,如何将数据库绑定到水晶报表?
- mac地址转换_mac电脑格式转化工具
- c语言程序设计整人,C语言进程间通信练习作品 - 整人小程序之剪切板
- linux 网络io命令详解,Linux下五种网络IO模型详解
- stm32使用DAP下载程序
- 单片机实验:节日彩灯控制器