Python学习笔记(八)

文件操作

f = open('d:\test.txt',mode='r',encoding='utf-8')
content = f.read()
print(content)
f.close()
'''
路径可以选用绝对路径或者相对路径
mode: 定义操作方式
encoding: 声明打开文件用什么编码本
close(): 关闭文件句柄(在内存中,必须要主动关闭)。
'''

# 读
# r模式
f = open('d:\test.txt',mode='r',encoding='utf-8')
content = f.read()   # read()将文件中的内容全部读取出来,只适合小文件
# content = f.read(3)   # read(n)指定读取到什么位置
.在r模式下,n按照字符读取。
# content = f.readline()  # readline()读取每次只读取一行,读取出来的数据在后面都有一个\n
# 可以用content = f.readline().strip()过滤换行符
print(content)
print(f.readlines())  # readlines() 返回一个列表,列表里面每个元素是原文件的每一行
f.close()
# 可以通过for循环读取,文件句柄是一个迭代器,特点是每次循环只在内存中占一行数据,节省内存。
# rb模式 以二进制格式打开一个文件用于只读
f = open('test.txt',mode='rb')
content = f.read()
print(content)
f.close()
# r+模式 打开一个文件用于读写。文件指针默认将会放在文件的开头。
f = open("log",encoding='utf-8',mode='r+')
content = f.read()
print(content)      # 读出原文件
f.write('abcd')     # 在文件末尾添加字段
f.close()
'''
注意:如果在读写模式下,先写后读,那么文件就会出问题,因为默认光标是在文件的最开始。要是先写,则写入的内容会讲原内容覆盖掉,直到覆盖到写完的内容,然后在后面开始读取。
'''
# r+b模式 以bytes类型操作的读写模式

# 写
# w模式 文件不存在则先创建再写入,文件存在则先清空再写入
f = open('log',mode='w',encoding='utf-8')
f.write('abcd')
f.close()
# wb模式 以二进制格式打开一个文件只用于写入
f = open('log',mode='wb')
f.write('附近看到类似纠纷'.encode('utf-8'))
f.close()
# w+模式 
f = open('log',mode='w+',encoding='utf-8')
f.write('abc')    # 文件存在则清空再写入
f.seek(0)     # 光标移至文件开头
print(f.read())
f.close()
# w+b模式 以bytes类型操作的写读模式

# 追加
# a模式 文件不存在则先创建再写入,文件存在则在最后追加写入
f = open('log',mode='a',encoding='utf-8')
f.write('斗破苍穹')
f.close()
# ab模式 类似于wb模式,追加式写入
# a+模式 类似于w+模式,追加式写入
# a+b模式 以bytes类型操作的写读模式(追加)

文件操作的其他功能

1、read(n)

  • 文件打开方式为文本模式时,代表读取n个字符
  • 文件打开方式为b模式时,代表读取n个字节

2、seek()

seek(n)光标移动到n位置,注意: 移动单位是byte,所有如果是utf-8的中文部分要是3的倍数
移动到开头:seek(0) 移动到结尾:seek(0,2)
seek的第二个参数表示的是从哪个位置进行偏移,默认是0,表示开头,1表示当前位置,2表示结尾

3、tell()

print(tell())可以帮我们获取当前光标在什么位置

4、readable(),writeable()

print(f.readable())和print(f.writeable())可以返回True或False来表示文件的可读写性

e.g. 用文件读写来实现一个简单的注册和登录功能

0

发表评论

您的电子邮箱地址不会被公开。