1.题目
把一个文本文件按照第一列分成多个文本文件,并且再最后添加一列,该列是文本文件的名字,最后把名字相同的文本文件放到同一个文件夹下。如图所示:
2.关键
(1)文本文件的读和写,起名时候注意排序。
(2)判断文件夹是否存在,不存在则新建。
(3)字符串截取。
3.可用完整代码
import osimport os.path#计算元素x在列表lst中出现的次数def countX(lst, x): return lst.count(x)#判断指定文件夹是否存在,如果不存在则创建目录def mkdir(path):# 引入模块#import os # 去除首位空格 path=path.strip()# 去除尾部 \ 符号 path=path.rstrip("\\") # 判断路径是否存在# 存在 True# 不存在 False isExists=os.path.exists(path) # 判断结果 if not isExists:# 如果不存在则创建目录# 创建目录操作函数 os.makedirs(path) print(path+' 创建成功') return True else:# 如果目录存在则不创建,并提示目录已存在 print(path+' 目录已存在') return False#读取整个原始txt文件def readtxt(txtfile,txt_list):#txtfile = "E:\\python\\id_txt_chaifen\\2017-0313_001.txt" with open(txtfile, "r",encoding='gb18030', errors='ignore') as f: txt_list = [line.rstrip('\n') for line in f] return txt_list if __name__ == "__main__": file_path = "E:/python/id_txt_chaifen/result/" txt_list = [] data = readtxt("E:/python/id_txt_chaifen/2017-0313_001.txt",txt_list)#获取所有id,并把他们放到同一个列表里 list_1 = [] for e in range(0,len(data)): list_1.append(data[e][:4])#列表2用于id出现次数 list_2 = [] list_2.append(list_1[0]) txt_path = file_path + list_1[0] mkdir(txt_path) file_name = txt_path + '/' + list_1[0] + '_' + str(1) + '.txt' file = open(file_name, 'w') # 创建一个txt文件,文件名为file_name str_1 = file_name[file_name.rfind('/', 1)+1:file_name.rfind('.', 1)] file.write(data[0]) file.write(' '+str_1) file.write('\r\n') for i in range(0,len(list_1)-1): if list_1[i] == list_1[i+1]: #遍历列表1,id与后一个相比,相同的该行数据写进同一txt文件中 str_1 = file_name[file_name.rfind('/', 1)+1:file_name.rfind('.', 1)] file.write(data[i+1]) file.write(' '+str_1) file.write('\r\n') else:#与后一个不同,则新建文件 list_2.append(list_1[i + 1]) num = countX(list_2, list_1[i + 1]) txt_path = file_path + list_1[i+1] mkdir(txt_path) file_name = txt_path + '/' + list_1[i+1] + '_' + str(num) + '.txt' file = open(file_name, 'w') str_1 = file_name[file_name.rfind('/', 1)+1:file_name.rfind('.', 1)] file.write(data[i+1]) file.write(' ' + str_1) file.write('\r\n') print('end!')
4.结果
(1)生成文件:
5.补充
如果你们没有时间处理自己简单的小问题(小问题,是小问题哈),可以交给我,我也许可以帮点小忙,然后给我公众号增加内容,嘻嘻。