本文将带你了解软件测试技术之如何用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将字符串s和换行符写入文件fp_软件测试技术之如何用python在Windows系统下,生成UNIX格式文件...相关推荐

  1. windows上的python能否在unix上使用_怎么用python在Windows系统下,生成UNIX格式文件

    在Windows下换行时,有两个字符:回车(/r)和换行(/n).但在Linux下,只有一个换行(/n)可使用unix2dos和dos2unix命令进行格式的转换: 参数: -k 保持输出文件和输入文 ...

  2. python将字符串s和换行符写入文件fp_【python】文件操作

    本文内容包括: 文件的读写操作 文件的各种系统操作 存储对象 遍历文件 上代码: import os import os.path rootdir = "d:/code/su/data&qu ...

  3. python将字符串s和换行符写入文件fp_Python 文件操作

    1. 字符简介 字符:无论什么语言,独立的一个文字就是一个字符 存储单位: Byte 字节 bit 位 1B = 8b B:字节,1 Byte = 8 bit 字符大小: 任何字符集:英文和数字都是一 ...

  4. python修改文件格式为unix_软件测试技术之如何用python在Windows系统下,生成UNIX格式文件...

    本文将带你了解软件测试技术之如何用python在Windows系统下,生成UNIX格式文件,希望对大家学测试技术有所帮助 如何用python在Windows系统下,生成UNIX格式文件 平时测试工作中 ...

  5. python将文件转成linux格式,怎么用python在Windows系统下,生成UNIX格式文件

    如何用python在Windows系统下,生成UNIX格式文件 平时测试工作中,少不了制造测试数据.最近一个项目,我就需要制造一批可在UNIX下正确读取的文件.为确保这批文件能从FTP下载成功,开发叮 ...

  6. 如何利用python在一个文档里xie'ru_如何用python在Windows系统下,生成UNIX格式文件...

    平时测试工做中,少不了制造测试数据.最近一个项目,我就须要制造一批可在UNIX下正确读取的文件.为确保这批文件能从FTP下载成功,开发叮嘱我:"文件中凡是遇到换行,换行符必须是UNIX下的L ...

  7. python 替换换行符,python去除字符串中的换行符

    今天写这个,要用python去除字符串中的换行符并写入文件,网上查阅,就一句代码replace("\n",""),加上之后,搞了半天,还是不对. 以上是我今天遇 ...

  8. python怎么去掉换行符_python去除字符串中的换行符

    今天写这个,要用python去除字符串中的换行符并写入文件,网上查阅,就一句代码replace("\n",""),加上之后,搞了半天,还是不对. 以上是我今天遇 ...

  9. python中的换行符是哪个键_对Python字符串中的换行符和制表符介绍

    对Python字符串中的换行符和制表符介绍 有关换行的问题 首先提一个问题,如下. python程序代码如下: print("I'm Bob. What's your name?" ...

最新文章

  1. 概率统计笔记: 协方差与相关系数
  2. excel查标准正态分布_用EXCEL简易制作正态分布图
  3. python中输入17=x会引起错误_python新手常犯的17个错误
  4. linux 热拔插硬盘,带电热插拔硬盘造成硬盘故障
  5. 超越存储,历久弥新!新华三发布入门级存储产品
  6. 中心极限定理_中心极限定理的的原理与应用
  7. PCWorld:IT界14对经典“生死冤家”
  8. [2019CCPC秦皇岛] G Game on Chessboard 状压dp
  9. 中小企业适合引入OA办公系统吗?
  10. 第九十七章 SQL函数 MONTH
  11. [labview]做一个简单实用可扩展功能的高速串口发送(接收)调试器
  12. 计算机相关经典书籍推荐
  13. CDRouter IPv6 Test Case
  14. php 网状结构,数据库模型-数据结构-网状模型
  15. 阿里的敏捷组织和中台策略有何不同?
  16. 基于STL的演讲比赛流程管理系统
  17. 实战五十三:基于机器学习随机森林的购房贷款违约预测(完整代码+数据集)
  18. TOP10效率工具大集合,0-3岁运营/产品/设计的懒人高效工具!
  19. 商品条码三大编码原则,您知道吗?
  20. 手把手使用Python教你破解谷歌(Google)人机验证码—上篇

热门文章

  1. 索尼单反相机跑焦的调整 A700 7D 5D
  2. 宝宝生活点滴(2009.11)
  3. Support for password authentication was removed on August 13, 2021
  4. 趣丸集团招股书“失效”,旗下TT语音已下架,如何实现稳定增长?
  5. STM32 Keil快速新建工程
  6. tl494c封装区别_详解TL494的性能特点参数 TL494引脚图与功能
  7. Unity URP中的Post-processing
  8. 1-医疗挂号系统_【项目介绍与Mybatis Plus】
  9. Python查看__main__.ListNode object at 0x0000000002A7CEB8 中的内容
  10. 反诈民警揭秘电信网络诈骗实施的全流程