版权声明:©;2004 Microsoft Corporation. All rights reserved. https://blog.csdn.net/qq_42036824/article/details/86601246
文件的读取操作
- 文件的指针:
f = open('/mnt/hui','r+')
content = f.read()
print(content)
print(f.tell())
f.write('python')
print(f.tell())
print(f.read())
print(f.tell())
f.close()
结果:
hello ##读取文件内容
6 ##读取完成,指针默认到字符后
12 ##添加'python'后的文件指针+6,变成12
##再次读取文件时就为空了,因为:指针所在位置为文件内容的最后
12 ##指针仍为12
- 区分:
- .read()
- .readline()
- .redalines()
f = open('/mnt/passwd','rb')
print(f.read())f = open('/mnt/passwd','rb')
print(f.read()) ##读取文件内容,在一行输出
f.close()
f = open('/mnt/passwd','rb')
print(f.readline()) ##读取文件内容,输出第一行
f.close()
结果:
b'root:x:0:0:root:/root:/bin/bash\n'
f = open('/mnt/passwd','rb')
print(f.readline())
print(f.readline()) ##读取两行内容,则需要写两边readline
f.close()
结果:
b'root:x:0:0:root:/root:/bin/bash\n'
b'bin:x:1:1:bin:/bin:/sbin/nologin\n'
f = open('/mnt/passwd','rb')
print(f.readlines()) ##读取文件内容,返回一个列表,列表的元素分别为文件的每行内容
f.close()
- 取出文件的前4个字符(类似于head -c 4 /mnt/passwd)
f = open('/mnt/passwd','rb')
print(f.read(4))
f.close()
结果:
b'root'
- 去掉文件每行的空格(\n也属于空格)
f = open('/mnt/passwd','rb')
print([line.strip()for line in f.readlines()])
f.close()
##也可以用匿名函数写
print(list(map(lambda x:x.strip(),f.readlines())))
- seek方法,移动指针
- seek第一个参数是偏移量:>0,代表向右移动;<0,代表向左移动
- seek第二个参数是:
0:移动指针到文件开头
1:不移动指针
2:移动指针到末尾
f.seek(0,0) 指针回0
f.seek(-1,2) 指针指向末尾,再向左移动一个位置
f = open('/mnt/passwd','rb')
print(f.tell()) ##指针一开始在0的位置
print(f.read(3)) ##读取三个字母
print(f.tell()) ##指针变为3
f.seek(0,0) ##指针回0
print(f.tell()) ##打印指针已经变为0
f.close()
结果:
0
b'roo'
3
0
- 练习题:
- 创建文件data.txt,文件共100000行,每行存放一个1~100之间的整数
import random
f = open('date.txt','a+')
for i in range(100000):
f.write(str(random.randint(1,100)) + '\n')
f.seek(0,0)
print(f.read())
f.close()