文章目录
- 1. 读取txt文本内容
- 1.1 read()
- 1.2 readline()
- 1.3 readlines()
- 2. 写入txt文本
- 2.1 读写模式
- 2.2 读取txt文件的若干行写入另一个txt
- 3. 其他使用
- 3.1 删掉指定字符前/后的内容
- 3.2 csv文件存为txt
- 3.3 numpy读写txt
- 3.3.1 np.savetxt()
- 3.3.2 np.loadtxt()
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=',')