Python - 文件
-
简单文件读写
#读文件 file=open('users.txt','r') content=file.read() print(type(content)) #str #写文件 str='我来自Python' file=open('users.txt','w') file.write(str) #会替换掉原文本 file.close() #追加数据 file=open('users.txt','a') file.write(str) file.close()
write()方法不会在字符串的结尾添加换行符(’\n’):当存入非字符串对象是,数据必须转化为字节码,或者序列化
-
File对象的属性
文件名:fo.name
是否已关闭:fo.closed
返回被打开文件的访问模式:fo.mode
末尾是否强制加空格 : fo.softspace
-
打开模式
标识 模式 说明 r 只读 文件不存在报错 w 只写 文件不存在,新建文件 a 追加 文件不存在,新建文件 r+ 可读写 文件不存在报错,先读取文件,然后才能写入文件,反之,写不进内容 w+ 可读写 先写文件,然后就无法读文件了。。。。 a+ 可读写 同上,原因是文件指针的位置走到了最后 二进制读写:
#wb+ my_string='hello world,您好世界\n' fp_write=open('data01.txt','wb+') fp_write.write(my_string.encode()) fp_write.close() #rb+ fp_read=open('data01.txt','rb+') content02=fp_read.read() print(content02) #b'hello world,\xe6\x82\xa8\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c\n' print(content02.decode('utf-8')) #hello world,您好世界 #ab+ fp_append=open('data01.txt','ab+') fp_append.write(my_string.encode()) fp_append.close()
-
目录
- ./ 当前目录
- …/上一级目录
- /下一级目录
-
常用方法
-
readlines()
fp_read=open('data.db','r',buffering=-1) line=fp_read.readline() lines=fp_read.readlines() for i in lines: print(i) fp_read.close()
-
tell()
返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
fp_read.tell()
-
seek()
如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。
from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:
- seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
- seek(x,1) : 表示从当前位置往后移动x个字符
- seek(-x,2):表示从文件的结尾往前移动x个字符
line=fp_read.readline() fp_read.seek(0) lines=fp_read.readlines()
-
flush()
flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
-