python之txt文件基本操作

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。python之txt文件基本操作,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

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=',') 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/162749.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!