文章目录
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