今天业务反应一个问题,给某第三方提供的对账文件出现解析错误,拿来一看发现该文件的明细使用|分割的,但是明细清单中某字段中出现了|,导致解析错误,第三方要求将存量数据检查重发。
我这边写了个简单的程序,扫描存量txt文件,并将分隔符数量不等于14的明细列出。
粗略代码如下:
#读某个路径下所有文件存储
def list_all_files(rootdir):
import os
_files = []
list = os.listdir(rootdir) #列出文件夹下所有的目录与文件
for i in range(0,len(list)):
path = os.path.join(rootdir,list[i])
if os.path.isdir(path):
_files.extend(list_all_files(path))
if os.path.isfile(path):
_files.append(path)
return _files
#统计字符串中某个字符的出现次数
def countChar(str,ch):
count = 0
for i in range(len(str)):
# print(i)
if str[i]==ch:
count = count + 1
# print( "%d:%d" %(i, count))
return count
_fs = list_all_files('g:/1/')
for i in _fs:
f = open(i, "r") # 设置文件对象
print(i+'\n')
line = f.readline()
while line: # 直到读取完文件
line = f.readline() # 读取一行文件,包括换行符
if countChar(line,'|') != 14 :
print(line)
f.close() # 关闭文件