python之txt文件基本操作

2023-10-31

1. 读取txt文本内容

python常用的读取文件函数有三种read()、readline()、readlines()

1.1 read()

read()一次性读取文本中全部的内容,以字符串的形式返回结果.

with open('test.txt', 'r') as f:  # 打开文件
    data = f.read()  # 读取文件
    print(data)

1.2 readline()

readline() 只读取文本第一行的内容,以字符串的形式返回结果.

with open('test.txt', 'r') as f:
    data = f.readline()
    print(data)

1.3 readlines()

readlines() 读取文本所有内容,并且以列表的格式返回结果,一般配合for in使用.

with open('test.txt', 'r') as f:
    data = f.readlines()
    print(data)

readlines会读到换行符,可用如下方法去除:

with open('test.txt', 'r') as f:
    for line in f.readlines():
        line = line.strip('\n')  #去掉列表中每一个元素的换行符
        print(line)

2. 写入txt文本

with open('test.txt','w') as f:
    f.write("写入文件测试!")  # 自带文件关闭功能,不需要再写f.close()

2.1 读写模式

要了解文件读写模式,需要了解几种模式的区别,以及对应指针

  • r : 读取文件,若文件不存在则会报错
  • w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件
  • a : 写入文件,若文件不存在则会先创建再写入,但不会覆盖原文件,而是追加在文件末尾
  • rb,wb: 分别于r,w类似,但是用于读写二进制文件
  • r+ : 可读、可写,文件不存在也会报错,写操作时会覆盖
  • w+ : 可读,可写,文件不存在先创建,会覆盖
  • a+ : 可读、可写,文件不存在先创建,不会覆盖,追加在末尾

2.2 读取txt文件的若干行写入另一个txt

方法一:

file_1 = './data/1.txt'
file_2 = './data/2.txt'

with open(file_1, 'rb') as fp1:
    with open(file_2, 'ab') as fp2:
        for i in range(100):
            line_data = fp1.readline()
            fp2.write(line_data)

方法二:

file_1 = './data/1.txt'
file_2 = './data/2.txt'

fp_1 = open(file_1, 'rb')
fp_2 = open(file_2, 'ab')
 
line_id = 0
while True:
    line_data = fp_1.readline()
    # print('line_data:', line_data)
    line_id = line_id + 1
    
    if line_id>=1 and line_id<=100:
        print('line_id:', line_id)
        fp_2.write(line_data)
    else:
        break
        
fp_1.close() # 文件关闭, 若不关闭可能会导致部分写入数据丢失
fp_2.close() # 文件关闭, 若不关闭可能会导致部分写入数据丢失

3. 其他使用

3.1 删掉指定字符前/后的内容

如下所示, 我们想删除右括号 ] 左边的内容, 得到 Today is Wednesday

line_data = '2021-09-01 [] Today is Wednesday'
head, sep, tail = line_data.partition('] ')
print(tail)

输出结果如下所示:

Today is Wednesday

3.2 csv文件存为txt

使用df.to_csv()不仅可以存储CSV文件, 还可以存储TXT文件:

import pandas as pd

df = pd.read_csv('./data/test.csv', header=None)
df.to_csv('./data/test.txt', sep=' ', header=None, index=None) # sep=' ' 分隔符为空格

3.3 numpy读写txt

3.3.1 np.savetxt()

numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ', encoding=None)[source]
  • fname:表示要保存文件的地址,可以自己建文件名,如‘test.txt’
  • X:表示要保存的文件
  • fmt:控制数据存储的格式
  • delimiter :分隔符,默认空格,也可以用逗号等
  • newline:表示换行的时候用什么,默认\n,表示换一行,也可以用\t,则表示空四格
  • header:表示头文件,如“test_data"
  • footer: 文件下的脚注
  • comment:注释,默认是#,因为python的注释是#,也可以用其它符号

样例代码如下:

import numpy as np 
#生成数据 
x = y = z = np.ones((2,3)) 
x 
>>> array([[1., 1., 1.], 
       [1., 1., 1.]]) 
        
#保存数据 
np.savetxt('test.out', x) 
np.savetxt('test1.out', x, fmt='%d') 
np.savetxt('test2.out', x, delimiter=',') 
np.savetxt('test3.out', x, newline='a') 
np.savetxt('test4.out', x, delimiter=',',newline='a') 
np.savetxt('test5.out', x, delimiter=',',header='abc') 
np.savetxt('test6.out', x, delimiter=',',footer='abc') 

3.3.2 np.loadtxt()

numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes')
  • fname:文件名/文件路径,如果文件后缀是.gz或.bz2,文件将被解压,然后再载入
  • dtype:要读取的数据类型
  • comments:文件头部或者尾部字符串的开头字符,用于识别头部,尾部字符串
  • delimiter:划分读取上来值的字符串
  • converters:数据行之间的分隔符

样例代码如下:

np.loadtxt('test.out') 
np.loadtxt('test2.out', delimiter=',') 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python之txt文件基本操作 的相关文章

随机推荐

  • 【计算机毕业选题】2023~2024计算机毕业设计选题篇-选题推荐

    学弟学妹们 大家好 这里是JAVA编码选手的博客空间 一年一度的计算机专业毕业设计又要开始了 大四的你们准备好选题了吗 先介绍一下自己 本人软件工程毕业 5年软件开发经验 计算机程序设计 java程序 Java代做 微服务SSM Java管
  • linux删除大量文件时,报错  argument list too long 

    linux删除大量文件时 报错 argument list too long 原因 删除数据量太大 解决办法 1 删除某个文件夹下 所有文件 cd 到需要删除的文件夹内 删除所有文件 ls xargs rm r 执行完后 可能有些文件删除不
  • COMP 9417 T2_2021 Lesson 8

    贝叶斯 numeric attributes 决策树 优点 某种形式的树可能仍然是最流行的data mining 易于理解 易于实施 易于使用 可以分类可以回归 可用于大数据的处理 例子 例子 在N中需要多少个M来分类 N个特征 thres
  • MeshLab相关&纹理贴图

    安装MeshLab sudo apt get install meshlab 操作 旋转视图 鼠标左键 拖动 缩放视图 滑动鼠标滚轮 shift 左键 平移视图 鼠标滚轮按钮 拖动 指定旋转 轨迹球中心 鼠标左键双击模型特定点 改变界面左下
  • python爬虫什么意思-终于知道python爬虫是什么意思

    爬虫过程中也会经历一些绝望啊 比如被网站封IP 比如各种奇怪的验证码 userAgent访问限制 各种动态加载等等 下面是小编为您整理的关于python爬虫是什么意思 希望对你有所帮助 python爬虫是什么意思 python爬虫即网络爬虫
  • ndarray对象——创建

    首先需要创建数组才能对其进行运算和操作 可以通过arrray 函数传递Python的序列对象来创建数组 如果传递的是多层嵌套的序列 将创建多维数组 下例变量中的c import numpy as np a np array 1 2 3 4
  • 信用卡评分模型(R语言)

    信用卡评分 2016年1月10日 一 数据准备 1 问题的准备 目标 要完成一个评分卡 通过预测某人在未来两年内将会经历财务危机的可能性来提高信用评分的效果 帮助贷款人做出最好的决策 背景 银行在市场经济中起到至关重要的作用 他们决定谁在什
  • 1.业务架构·应用架构·数据架构实战 --- 架构实践全景图

    第1章 架构实践全景图 1 1 战略 BA DA AA TA五者的关系 业务架构是跨系统的业务架构蓝图 应用架构 数据架构 技术架构是解决方案的不同方面 BA Business Architecture 业务架构 DA Data Archi
  • 计算机网络-应用层协议3(SMTP、POP3、IMAP)

    1 SMTP 简单邮件传输协议 1 1 SMTP的基本操作 假设Alice想给Bob发送一封简单的ASCII报文 Alice调用她的邮件代理程序并提供Bob的邮件地址 bob someschool edu 撰写报文 然后指示用户代理发送该报
  • 【2022版】Golang面试题目全网超全超详细的口语化解答总结

    2022版 Golang面试题目全网超全总结 1 特性篇 1 1 Golang 使用什么数据类型 1 2 字符串的小问题 1 3 数组定义问题 1 4 内存四区 1 5 Go 支持什么形式的类型转换 1 6 空结构体的作用 1 7 单引号
  • 完全理解图(上)——图的概念、存储及遍历

    术语 图 由结点的有穷集合V和边的集合E组成 在图中 结点常被称为顶点 若两个顶点之间存在一条边 则表示两个顶点相邻 有向图 图的每条边都有方向 无向图 图的每条边没有方向 弧 有向图中 常将边称为弧 含箭头的一端称为弧头 另一端称为弧尾
  • spark机器学习训练模型示例(一)

    利用逻辑回归建立模型 建立训练集和测试集 from pyspark ml import Pipeline from pyspark ml classification import LogisticRegression from pyspa
  • 并发编程系列之线程池工厂类:Executors

    前言 上节讲了讲自定义线程池 今天我们来聊聊线程池框架 在实际开发中我们还是基本使用线程框架Executor给我们提供的一些工具类 Java提供的Executor都在JUC java util concurrent 包下面 主要包括 线程池
  • ChatGPT 与 Github Copilot 对于程序员的作用

    文章目录 1 ChatGPT 是什么 2 ChatGPT 的用处 ChatGPT 写代码 ChatGPT 定位问题 ChatGPT 厘清概念 ChatGPT 内容创作 3 Github Copilot 的用处 4 小结 参考文献 1 Cha
  • Qt Creater Bug: multiple define of ...

    在导入自己写的文件到Qt 工程时 发现报了好多个 multiple define of 的错误 网上查了以下 解决方法有提到 头文件重复包含 ifndef define endif 编译出来的 o文件链接失败 需要clean工程的生成文件
  • jvm原理(37)JVM内存空间划分与作用详解

    JVM内存区域分了如下几个区域 虚拟机栈 Stack Frame 在执行一个方法的时候 会有一个栈帧 用来存储 方法里边的操作数的出栈入栈 当java文件编译完成的时候 max stack 栈最大的深度 max local 最大局部变量表有
  • python定义函数prime判断是否是素数_用自定义函数判断素数 用C语言编写自定义函数prime(int x),判断x是否为素数?...

    用C语言编写自定义函数prime int x 判断x是否为素数 int prime int x int i k k int sqrt double x for i 2i lt ki if x i 0 break 如果完成所有循环 那么x为素
  • Python+uiautomator2+夜神模拟器,实现安卓自动化操作的一些尝试

    前言 说一下这个配置的来源 最开始是想抓取某个应用里面的一些文本信息 自己的手机没root不好抓包 所以下载了安卓模拟器 然后安装抓包APP 直接抓 发现内容传输是加密的 那么在不去研究加密方法 最简单的方式 就是直接从屏幕控件中提取文本了
  • 基于RK3568的Linux开发

    第一篇 RK3568 Linux系统移植 文章目录 目录 第一篇 RK3568 Linux系统移植 文章目录 前言 一 编译环境搭建 1 编译环境介绍 2 安装依赖 二 获取官方的RK356X Linux SDK包 1 解压RK356X L
  • python之txt文件基本操作

    文章目录 1 读取txt文本内容 1 1 read 1 2 readline 1 3 readlines 2 写入txt文本 2 1 读写模式 2 2 读取txt文件的若干行写入另一个txt 3 其他使用 3 1 删掉指定字符前 后的内容