导入库函数
import os
函数1:在指定目录下查找指定后缀名的文件,不查找子目录,返回文件路径名列表。 默认在当前目录下查找,不指定后缀名。
def get_filelist(base_dir='.', target_ext=''):
fname_list = []
for fname in os.listdir(base_dir):
#os.listdir——列出base_dir下的所有文件
path = os.path.join(base_dir, fname)
#把base_dir的路径和fname的路径连起来
if os.path.isfile(path):
#如果path对应的内容是一个文件的话
fname_main, fname_ext = os.path.splitext(fname)
# os.path.splitext——把文件名和后缀切分开
if fname_ext == target_ext or target_ext == '':
#如果是我们需要的后缀名的话,放到需要返回的列表里面去
fname_list.append(path)
return(fname_list)
以下图为例,测试函数
得到(因为是windows系统,所以反斜线可能会比较奇怪)
函数2:将列表 file_list 里的文件(默认为文本文件)合并到一个文本文件
def merge_txt2txt(in_file_list, out_file_name):
out_file = open(out_file_name, 'w', encoding='utf-8')
#需要写入的文件
out_file.write('合集')
out_file.write('\n' + '='*50 + '\n\n')
for fname in in_file_list:
#对于每一个要合并的文件
in_file = open(fname, 'r', encoding='utf-8')
content = in_file.readlines()
in_file.close()
# 往txt文档中添加内容
out_file.write('--- ' + fname + ' ---\n\n')
out_file.writelines(content)
out_file.write('\n\n' + '='*50 + '\n\n')
out_file.close()
然后进行测试:
result_dir_name = 'D:/tmp/output/tmp/'# 设置保存目标文件的目录
# --- 如果不确定该目录是否存在,可以用如下代码检查
if os.path.isdir(result_dir_name): # 检查目录是否存在
pass
else:
os.makedirs(result_dir_name) # 如果不存在,就建立该目录
## os.makedirs(path)可以建立多级目录,例如'./output/test1'
txt_file_name=result_dir_name+'result.txt'
merge_txt2txt(file_list, txt_file_name)
那么在tmp/output/tmp/里面就有了我们的文件
原来的两个文件:
合并后的文件
函数3: 将列表 file_list 里的文件合并到一个docx文件
def merge_txt2docx(in_file_list, out_file_name) :
doc=Document()
#创建docx文档对象
doc.styles['Normal'].font.name = 'Courier New'
# 设置英文字体
doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
# 设置中文字体
doc.add_heading('合集', 0) # 0级标题
# 往docx文档中添加标题
for fname in in_file_list: # 遍历列表中的所有文件
in_file = open(fname, 'r', encoding='utf-8')
# 打开文本文件,读取内容
content = in_file.read()
#这里是read!
in_file.close()
# 往docx文档中添加段落
doc.add_heading(fname, 1) # 当前文件名作为1级标题
doc.add_paragraph(content) # 当前文件内容作为正文
doc.add_page_break()
# 添加分页符
doc.save(out_file_name)
# 保存文档
同样地,我们进行测试
result_dir_name = 'D:/tmp/output/tmp/'
# 设置保存目标文件的目录
# --- 如果不确定该目录是否存在,可以用如下代码检查
if os.path.isdir(result_dir_name): # 检查目录是否存在
pass
else:
os.makedirs(result_dir_name) # 如果不存在,就建立该目录
## os.makedirs(path)可以建立多级目录,例如'./output/test1'
txt_file_name=result_dir_name+'result.docx'
merge_txt2docx(file_list, txt_file_name)
结果为: