16.读取指定路径下的txt文档然后合并内容为一个txt文档。

news2024/11/15 12:47:07

1.题目要求

分别读取路径为 
./middle/phone/base/1_student_0.txt,
./middle/vr/base/1_teacher.txt,
./nearby/phone/base/1_student_0.txt,
./nearby/vr/base/1_teacher.txt,
./outside/phone/base/1_student_0.txt,
./outside/vr/base/1_teacher.txt 
里面的文件,并计算每个文件的行数,然后合并这些文件的内容到一个名为base_together.txt的文件中。
同时,还会输出每个文件的行数以及总行数,最后还会输出合并后文件的行数。
记录文件行数用于验证读取文件数量是否正确。

2.代码实现

# 使用Python的os模块和open函数来合并文件
import os

# 定义要合并的文件列表
file_list = [
    "./middle/phone/base/1_student_0.txt",
    "./middle/vr/base/1_teacher.txt",
    "./nearby/phone/base/1_student_0.txt",
    "./nearby/vr/base/1_teacher.txt",
    "./outside/phone/base/1_student_0.txt",
    "./outside/vr/base/1_teacher.txt",
]

# 定义输出文件名
output_file = "base_together.txt"

# 初始化行数计数器
total_lines = 0

# 使用循环逐个读取文件
for file in file_list:
    # 使用os.path.basename获取文件名
    filename = os.path.basename(file)

    # 打印当前处理的文件名
    print(f"正在处理文件:{filename}")

    # 使用open函数以读模式打开当前文件
    with open(file, 'r') as infile:
        # 计算文件中的行数
        lines = sum(1 for line in infile)

        # 更新总行数计数器
        total_lines += lines

        # 打印当前文件的行数
        print(f"{filename}{lines} 行")

# 打印总行数
print(f"总共有 {total_lines} 行")

# 使用open函数以写模式打开输出文件
with open(output_file, 'w') as outfile:
    for file in file_list:
        # 使用open函数以读模式打开当前文件
        with open(file, 'r') as infile:
            # 将当前文件的内容写入输出文件
            outfile.write(infile.read())

# 使用open函数以读模式打开输出文件
with open(output_file, 'r') as infile:
    # 计算输出文件中的行数
    output_lines = sum(1 for line in infile)

    # 打印输出文件的行数
    print(f"{output_file}{output_lines} 行")

输出结果:
在这里插入图片描述

3. 补充

其实 直接用 简单的shell ,cat 也可以实现文件合并功能。

$ cat ./middle/phone/base/1_student_0.txt ./middle/vr/base/1_teacher.txt ./nearby/phone/base/1_student_0.txt ./nearby/vr/base/1_teacher.txt ./outside/phone/base/1_student_0.txt ./outside/vr/base/1_teacher.txt > base_together.txt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1597087.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode: 3117. 划分数组得到最小的值之和 + 动态规划】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

linux shell脚本编写(2)

Shell: 命令转换器,高级语言转换成二进制语言。是Linux的一个外壳,它包在Lniux内核的外面,用户和内核之间的交互提供了一个接口。 内置命令:在shell内部不需要shell编辑 外置命令:高级语言要用shell转换成二进制语言 …

Numpy数组和列表list的区别

参考:Numpy Array vs List 在Python编程中,列表(list)和Numpy数组(numpy array)是两种常见的数据结构,它们都可以用来存储多个元素。但是它们在实际使用中有很大的区别,本文将详细比…

【尚硅谷】Git与GitLab的企业实战 学习笔记

目录 第1章 Git概述 1. 何为版本控制 2. 为什么需要版本控制 3. 版本控制工具 4. Git简史 5. Git工作机制 6. Git和代码托管中心 第2章 Git安装 第3章 Git常用命令 1. 设置用户签名 1.1 基本语法 1.2 案例实操 2. 初始化本地库 2.1 基本语法 2.2 案例实操 3. 查…

RabbbitMQ基本使用及其五种工作模型

初识MQ 同步通讯和异步通讯 什么是同步通讯呢?举个例子,你认识了一个小姐姐,聊的很火热,于是你们慢慢开始打电话,视频聊天,这种方式就成为同步通讯,那什么是一部通讯呢,同样的&…

P1706 全排列问题

原题链接:全排列问题 - 洛谷 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 dfs典题 3. 代码实现 #define _CRT_SECURE_NO_WARNINGS 1 #include<bits/stdc.h> using namespace std; #define ll long long #define endl \n const int N 2…

电脑技巧:Bandicam班迪录屏介绍

目录 一、 软件简介 二、软件功能 2.1 屏幕录制 2.2 游戏录制 2.3 设备录制 2.4实时编辑与截图 2.5 轻量级软件 三、软件用途 3.1 教育培训 3.2 游戏直播与分享 3.3 企业办公 3.4 在线教学与知识分享 四、总结 今天给大家推荐一款非常实用的电脑录屏软件&#xf…

Java实现单点登录(SSO)详解:从理论到实践

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; ✨✨ 帅哥美女们&#xff0c;我们共同加油&#xff01;一起进步&am…

提高大型语言模型 (LLM) 性能的四种数据清理技术

原文地址&#xff1a;four-data-cleaning-techniques-to-improve-large-language-model-llm-performance 2024 年 4 月 2 日 检索增强生成&#xff08;RAG&#xff09;过程因其增强对大语言模型&#xff08;LLM&#xff09;的理解、为它们提供上下文并帮助防止幻觉的潜力而受…

java-字符串

一、String概述 java.lang.String类代表字符串&#xff0c;java中所有字符串文字都是该类的对象 字符串的内容是不会发生变化的&#xff0c;它的对象在创建之后就不能被更改 二、创建String对象 1、直接赋值 语法&#xff1a; String 变量名内容&#xff1b; 2、使用构造…

Linux 磁盘存储挂载

fdisk -l 查看磁盘信息 mkfs.xfs /dev/vdc 格式化数据盘 mkdir vdev1 创建挂载点 mount /dev/vdc /vdev1 文件系统挂载点挂载 df -h 确认挂载成功 vi /etc/fstab 插入 /dev/vdc /vdev1 xfs defaults 0 0 /dev/vdc /vdev1 xfs defaults 0 0 保存就可以了 卸载实例&#…

韩顺平 | 零基础快速学Python(16) 文件处理

文件 输入与输出 输入&#xff1a;数据从数据源(文件)到程序(内存)&#xff1b; 输出&#xff1a;数据从程序(内存)到数据源(文件)。 #mermaid-svg-06PG6JZq4jJMV1oH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-sv…

SpringBoot源码解析-01

SpringBoot3详细版 一&#xff1a;SpringBoot引入&#xff1a; 1.1.什么是Springboot&#xff1a; SpringBoot 帮我们简单、快速地创建一个独立的、生产级别的 Spring 应用&#xff08;说明&#xff1a;SpringBoot底层是Spring&#xff09; 大多数 SpringBoot 应用只需要编…

洛谷 P9532 [YsOI2023] 前缀和

题目背景 Ysuperman 模板测试的试机题。 小心立秋&#xff0c;小心秋丽。 题目描述 立秋有一个长度为 n 的数组 a&#xff0c;所有数字都是正整数&#xff0c;并且除了其中第一个数字以外其它数字都等于前面所有数字的和。 例如&#xff0c;数组 [1,1,2,4,8,16] 就有可能是…

如何入行产品经理?

转产品经理第一点要先学基础理论知识&#xff0c;学了理论再去实践&#xff0c;转行&#xff0c;跳槽&#xff01; 学理论比较好的就是去报NPDP的系统班&#xff0c;考后也会有面试指导课&#xff0c;跟职场晋升课程&#xff0c;对小白来说非常合适了~&#xff08;可以去哔站找…

【程序分享】AACSD 程序: 用于晶体结构和缺陷的原子分析平台

分享一个 AACSD 程序: 用于晶体结构和缺陷的原子分析平台。 感谢论文的原作者&#xff01; 主要内容 “我们开发了一个名为 AACSD&#xff08;晶体结构和缺陷原子分析器&#xff09;的高效命令行程序&#xff0c;用于对各种原子模拟代码生成的原子配置进行后期分析。该程序不…

利用栈删除数组中重复元素

先将数据排序&#xff08;降序或升序&#xff09; 建立一个“栈”&#xff0c;三种情况&#xff1a; 1.栈为空&#xff1a;压入一个元素 2.栈不为空 且 栈顶元素不等于将入栈元素&#xff1a;压入一个元素 3.栈不为空 且 栈顶元素等于将入栈元素&#xff1a;删除将压入元素…

循环双链表的操作

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 每一个裂缝都是为透出光而努力&#…

Redis消息队列-基于PubSub的消息队列

7.3 Redis消息队列-基于PubSub的消息队列 PubSub&#xff08;发布订阅&#xff09;是Redis2.0版本引入的消息传递模型。顾名思义&#xff0c;消费者可以订阅一个或多个channel&#xff0c;生产者向对应channel发送消息后&#xff0c;所有订阅者都能收到相关消息。 SUBSCRIBE …

mysql dump导出导入数据

前言 mysqldump是MySQL数据库中一个非常有用的命令行工具&#xff0c;用于备份和还原数据库。它可以将整个数据库或者特定的表导出为一个SQL文件&#xff0c;以便在需要时进行恢复或迁移。 使用mysqldump可以执行以下操作&#xff1a; 备份数据库&#xff1a;可以使用mysqld…