python——文件的读取操作

版权声明:©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()

猜你喜欢

转载自blog.csdn.net/qq_42036824/article/details/86601246