plumrx 的博客

Plumrx

prepareNote

用python完成数据准备小工具

背景

因为平时的测试工作中,数据准备工作内容重复性高、花费时间长、具有一定的共性,所以想开发一款帮助完成数据准备的小工具,以此来提升工作效率。

一、需求分析

根据提供的一些字段,对每个进行补位等处理,并将其组合成一条总位数恒定的数据,最终将其保存在DAT文件中。

输入:二维数组,格式一致,行对应一条数据,列对应动态的字段。

输出:DAT文件,其中每条数据各占一行,文件名可定义。

1
2
3
4
5
样例:
输入:[客户号,调前固额,短信码,日期]
输出:十位客户号+,+一位空格+9位调前固额+6位短信码+8位日期,共计40位,末尾用空格补齐
输入:[123456789,5500,SCLD01,20191030]
输出:0123456789, 000005500SCLD0120191030bbbbb  

二、思路梳理

  1. 定义一个二维数组,用于存放输入数据。
  2. 逐行对数组的第1列元素进行处理,将其转换成10位数字,不足10位前面补0,大于10位报错,并在其尾部补一位逗号及空格。
  3. 逐行对数组的第2列元素进行处理,将其转换成9位数字,不足9位前面补0,大于9位报错。
  4. 逐行对数组的第3列元素进行处理,检查其是否长度为6,否则报错。
  5. 逐行对数组的第4列元素进行处理,检查其长度是否为8,否则报错。
  6. 将处理后的数组进行拼接,末尾用空格自动补齐40位。
  7. 每一行数组生成一条40位的数据,每条数据之间换行。
  8. 将处理好的数据转成DAT文件,命名为test1.DAT。

三、实现方法

  1. 前补位方法

该方法用于对输入数据数据进行前面补位的处理,三个参数分别是:需处理的字段、处理后字段的长度、填充字符。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def pad_start(string,length,char,):
#字符串总长度
string_length = len(string)
#无需补位
if string_length == length:
return string
#超出总长度,报错
elif string_length > length:
print("wrong!")
#少于总长度,补位8
else :
string_out = string
#计算出需补齐的位数
for _ in range (length - string_length):
string_out = char + string_out
return string_out
  1. 后补位方法

该方法用于对输入数据数据进行末尾补位的处理,三个参数分别是:需处理的字段、处理后字段的长度、填充字符。

1
2
3
4
5
6
7
8
9
10
11
12
13
def pad_end(string,length,char):
#字符串总长度
string_length = len(string)
if string_length == length:
return string
elif string_length > length:
print("wrong!")
else:
string_out = string
#计算出需补齐的位数
for _ in range (length - string_length):
string_out = string_out + char
return string_out
  1. 拼接方法

利用python的join函数,该函数的功能是将列表中的元素进行拼接。

1
2
#将列表各字段拼接成一个字符串
result=''.join(out_list)
  1. 文件读取

file对象可以用来做大部分的文件操作,但是目前本人只学习了打开文件及写文件两种方法:

1
2
file = open ("SCL002U.DAT","x")
file.write(main(input_data))
  • 打开文件

file_name:即你需要打开或者新建的文件名

access_mode:打开文件的模式,有只读、写入等等 ,我这里用到的参数是x,即新建一个文件,并对其忽悠写入的权限。

buffering:跟寄存有关,暂未了解更多

1
file object = open(file_name [, access_mode][, buffering])
  • 写文件

这里用到的是write()方法,该方法可以将任何字符串写在已打开的文件中。

1
file.write()

四、总结回顾

这个数据准备小工具算是我第一个用python语言完成的小作品,虽然拖延了好几天,但看到DAT文件中的那两行字符串,心中依然是充满了成就感。^_^通过完成这个小工具,一定程度上克服了对敲代码的心里排斥感,也增强了我继续学习的信心和勇气。很难想象两年以前的我为了逃避写代码这件事,做出了现在看来完全错误的决定,当时的我没有直面自己内心真实的勇气,我不知道在做什么,但是我在逃避。

完成这个小工具的过程,也体现了我自身的很多不足之处。第一点就是拖延,一想到要写代码就觉得焦虑,应该减少对焦虑的感受,要忽略它,然后坐下来开始写;第二点是python语法基础薄弱,很多基本的函数不了解,语法报错较多,需要更多的学习和积累;第三点是对于陌生的知识点,不求甚解,这一点非常不好,缺乏钻研精神,应尝试多去了解一步,敢于提问敢于质疑。

当然,这个小工具还是存在很多的局限,后期我会尝试做出一些优化。