Python之路_基础_04_文件操作
1、打开文件
得到文件句柄并赋值给一个变量
f=open("文件名","权限",encoding="utf-8")
2、通过句柄对文件进行操作
f.read([size]) #从文件读取指定的字节数,如果未指定或者负数则读取所有
f=open("sing","r",encoding="utf-8") f_r=f.read() print(f_r) f.close()
f.readline([size]) #读取整行,包括\n字符
循环读取文件内容:
#打开文件 f=open("sing","r",encoding="utf-8") print("文件名为:",f.name) line=f.readline() print("读取的第一行为:%s"%(line)) line=f.readline(5) print ("读取的字符串为: %s" % (line)) #关闭文件 f.close()
运行结果:
文件名为: sing
读取的第一行为:塞纳河畔 左岸的咖啡
读取的字符串为: 我手一杯
f.readlines([sizeint])
#读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要 填充缓冲区
# 打开文件 fo = open("sing", "r",encoding="utf-8") print("文件名为: ", fo.name) for line in fo.readlines(): # 依次读取每行 line = line.strip() # 去掉每行头尾空白 print("读取的数据为: %s" % (line)) # 关闭文件 fo.close()
3、关闭文件
f.close()
4、seek()方法
用于移动文件读取指针到指定位置
语法:
fileObject.seek(offset[,whence])
参数说明:
offset ->开始的偏移量,代表需要偏移的字节数
whence ->可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
# 打开文件 fo = open("sing", "r+",encoding="utf-8") print ("文件名为: ", fo.name) line = fo.readline() print ("读取的数据为: %s" % (line)) # 重新设置文件读取指针到开头 fo.seek(0, 0) line = fo.readline() print ("读取的数据为: %s" % (line)) # 关闭文件 fo.close()
5、tell()方法
返回文件的当前位置,即文件指针当前位置
语法:
fileObject.tell(offset[,whence])
# 打开文件 fo = open("sing","r+",encoding="utf-8") print ("文件名为: ", fo.name) line = fo.readline() print ("读取的数据为: %s" % (line)) # 获取当前文件位置 pos = fo.tell() print ("当前位置: %d" % (pos)) # 关闭文件 fo.close()
6、flush()方法
用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
使用场景:
一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
语法:
fileObject.flush()
进度条例子:
import sys,time for i in range(20): sys.stdout.write("#") sys.stdout.flush() time.sleep(0.1)
7、write()
向文件写入指定的字符串。
在文件关闭前或缓冲区刷新前,字符串内容存在缓冲区中,这时你在文件中是看不到写入的内容的。
语法:
filieObject.write( [ str ] )
# 打开文件 fo = open("test.txt", "r+",encoding="utf-8") print ("文件名: ", fo.name) str = "5:www.oldboy.com" # 在文件末尾写入一行 fo.seek(0, 2) line = fo.write( str ) # 读取文件所有内容 fo.seek(0,0) for index in range(5): line = next(fo) print ("文件行号 %d - %s" % (index, line)) # 关闭文件 fo.close()
8、writelines()
用于向文件中写入一序列的字符串
这一序列字符串可以由迭代对象产生的,如一个字符串列表,换行需要制定换行符\n
语法:
fileObject.writelines( [ str ] )
# 打开文件 fo = open("test.txt", "w",encoding="utf-8") print ("文件名为: ", fo.name) seq = ["菜鸟教程 1\n", "菜鸟教程 2"] fo.writelines( seq ) # 关闭文件 fo.close()
文件操作——增删改查
r+ #读写 w+ #写读 a+ #追加读写 rb #二进制文件,比如打开视频文件 U #可以将\r \n \r\n自动转换成\n
with语句:
为了避免打开文件后忘记关闭,可以通过管理上下文
语法:
with open('log','r') as f
当with代码块执行完毕时,内部会自动关闭并释放文件资源
人生苦短,我用Python