# encoding=utf-8
"""
<读取txt文件,返回一维数组>
@param [inFilePath] [转换前的原始文件]
@param [flag] [是否去重,0为不去重,1为去重,默认去重]
@return [lists] [返回一维数组]
"""
def fileToList(filePath, flag=1):
f = open(filePath, encoding="utf-8-sig")
list = f.readlines() # 每一行数据写入到list中
# print(list)
lists = []
# 将txt文件转换成数组形式保存
for fields in list:
fields = fields.strip() # fields.strip()用来删除字符串两端的空白字符。
fields = fields.strip("\n") # fields.strip("[]")用来删除字符串两端方括号。
fields = fields.split(",") # fields.split(",")的作用是以逗号为分隔符,将字符串进行分隔。
# print(fields)
for temp in fields:
lists.append(temp)
if flag == 1:
lists = set(lists)
return lists
"""
<将list输出一行多条数据的文件,默认不包含单引号和中括号>
@param [lists] [转换前的原始文件]
@param [outFilePath] [输出文件]
@param [listLen] [输出的文件,每一行数据条数]
@param [haveSQ] [single quotes,单引号,是否包含单引号,0为不包含,1为包含,默认不包含单引号]
@param [haveBrackets] [brackets,中括号,是否包含中括号,0为不包含,1为包含,默认不包含中括号]
"""
def listsWriteToFile(lists, outFilePath, listLen, haveSQ=0, haveBrackets=0):
listTemp = []
for i in lists:
if haveSQ == 0:
i = int(i)
listTemp.append(i)
if len(listTemp) == listLen:
f = open(outFilePath + str(listLen) + ".txt", "a", encoding='utf-8')
listTempStr = str(listTemp)
# 0为不包含中括号
if haveBrackets == 0:
listTempStr = listTempStr.strip("[]")
f.write(listTempStr + "\n")
f.close()
listTemp = []
"""
<读取txt文件,输出成一行多条数据的文件>
<txt文件一行只有一条数据,读取txt文件,输出成一行多条数据的list文件,默认不包含单引号和中括号>
@param [inFilePath] [转换前的原始文件]
@param [outFilePath] [转换后的文件名称]
@param [listLen] [输出的文件,每一行数据条数]
@param [flag] [是否去重,0为不去重,1为去重,默认去重]
@param [haveSQ] [single quotes,单引号,是否包含单引号,0为不包含,1为包含,默认不包含单引号]
@param [haveBrackets] [brackets,中括号,是否包含中括号,0为不包含,1为包含,默认不包含中括号]
<备注:循环到最后一次时,数据等于listLen,该部分数据会舍弃>
"""
def fileToListToFile(inFilePath, outFilePath, listLen, flag=1, haveSQ=0, haveBrackets=0):
lists = fileToList(inFilePath, flag)
listsWriteToFile(lists, outFilePath, listLen, haveSQ, haveBrackets)
inFilePath = "./file/数字.txt"
outFilePath = "./file/数字-"
listLen = 3
fileToListToFile(inFilePath, outFilePath, listLen, 0)
# fileToListToFile(inFilePath, outFilePath, listLen, 1, 1, 1)