通过python检测文件内容完整性

2018-05-12  本文已影响0人  步履不停的Suunny

如何测试报表转换后的字段是否丢失?

需求: CSV表格 内容进行提取,然后做其他处理,开发在提取过程中由于表格变更或其他原因,有部分项目条目丢失,因此需要比对子段 。 但是一条一条过,有点考验耐心,花了半天时间,写了个小程序完成。

源表和目标表格如下,要比对的内容是转换后表格中每项内容是否都存在:


源表.png 目标表.png

代码如下:

#-*- coding:utf-8 -*-
import xlrd
import sys

def get_exceldata(fileDir):
    workbook = xlrd.open_workbook(fileDir)
    table = workbook.sheets()[0]
    # 获取行列
    nrows = table.nrows
    ncols = table.ncols
    #sheet2 = workbook.sheet_by_index(0)  # sheet索引从0开始

    # print(nrows, ncols)
    for i in range(nrows):  # 循环逐行打印
        # 获取第一列数据
        excel_datas = table.cell_value(i, 0)
        return excel_datas

def check_translateData():
    #get Excel data
    #fileDir = "E:\\test-tmp\\Excel\\2017年4月中化石油有限公司利润表.xlsx"
    fileDir = sys.argv[1]  # 获取生成后的Excel表
    #print (fileDir)
    excel_data = get_exceldata(fileDir)

    #get src file data
    #srcfile = 'E:\\test-tmp\\Excel\\1.txt'
    srcfile = sys.argv[2]   #获取源表
    with open(srcfile,encoding='utf-8',errors='ignore' ) as f:
        file_data = f.readlines()
        for title in file_data:
            if len(title)>1:  #空行len(title) ==1, 过滤空行
                if excel_data.find( title.split()[0]):
                    print ("find ",title.split()[0].lstrip())
                    pass
                else:
                    print ("Can't find ",title.split()[0].lstrip())
                    return -1
def main():
    #src_cvs()
    print("开始运行!")
    #print (len(sys.argv))
    if len (sys.argv) < 3:
        argv_msg = "缺少参数,请依次输入转换后表格和SAP源表格,执行命令示例如下:"
        example_msg = 'python3 excel_check.py 转换后表格文件 源表格文件'
        print(argv_msg)
        print (example_msg)
        return -1
    else:
        check_translateData()

if __name__ == "__main__":
    main()

运行结果,即因此查找src中的每个字段是否在Excel中存在。
遇到的问题:

1、python带参数运行
2、Excel表格处理
3、TXT文件处理

文件打开要用utf-8格式
with open(srcfile,encoding='utf-8',errors='ignore' ) as f:

4、低内聚高耦合??

其他没用到的代码:

def src_txt():
    with open('E:\\test-tmp\\Excel\\1.txt',encoding='utf-8',errors='ignore' ) as f:
        reader = f.readlines()
        for title in reader:
            if len(title)>1:
                #print(len(title))
                print (title.split()[0])



def src_cvs():
    with open('E:\\test-tmp\\Excel\\1.XLS', encoding='utf-8', errors='ignore') as f:
        reader = csv.reader(f)
        rows = [row for row in reader]
        print(rows)

    pass
上一篇下一篇

猜你喜欢

热点阅读