python 文件处理1:将某一目录下的文件合并

这篇博客介绍了两个实用的Python函数,用于在指定目录下查找特定后缀的文件并合并成单一文本文件或docx文档。函数1查找并返回指定后缀的文件列表,函数2将txt文件合并为一个txt文档,而函数3则将多个txt文件合并为一个docx文档。这些函数对于处理和整理大量文本文件非常有用。
摘要由CSDN通过智能技术生成

导入库函数

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) 

结果为:

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值