文件处理流程
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
打开文件的模式有三种:
- 只读模式(默认)
- 只写模式(不可读,不存在则创建,存在则覆盖)
- 追加模式(可读,不存在则创建,存在则只追加内容)
"+"表示可同时读写某个文件: 1. r+可读写文件(可读,可写,可追加) 2. w+写读 3. a+追加 "U"表示在读取时,可以将 自动转换成 (与r或者r+模式同时使用) 因为Windows系统的换行符为 ,Linux系统的换行符为 ,加上U则能自动把 转换成 1. rU 2. r+U "b"表示处理二进制文件 1.rb 2.wb 3.ab
文件操作基本用法
基本用法:open()
file_object = open(file_name, access_mode = ‘r’, buffering = -1) open函数有很多的参数,常用的是file_name,mode和encoding file_name:打开的文件名,若非当前路径,需指出具体路径 access_mode文件打开模式 buffering的可取值有0,1,>1三个,0代表buffer关闭(只适用于二进制模式),1代表line buffer(只适用于文本模式),>1表示初始化的buffer大小; encoding表示的是返回的数据采用何种编码,一般采用utf8或者gbk;
#打开文件open() f = open('test.txt','r+') #或者with open() 这种方法操作完成后,会自动关闭不需要close() with open('test.txt','r') as f: f.read() #关闭文件 f = open('test.txt','r+',encoding='utf-8') ret = f.read() print(ret) f.close() #读取文件内容(可指定每次读取字字符) f = open('test.txt','r+',encoding='utf-8') ret = f.read(8) print(ret) #读取数据(可指定读取字符数),存为list显示 f = open('test.txt','r+',encoding='utf-8') ret = f.readlines() print(ret) f.close() #读取一行数据 f = open('test.txt','r+',encoding='utf-8') ret = f.readline() print(ret) f.close() #写入文件write()参数是字符串 f = open('test.txt','a+',encoding='utf-8') f.write("abc") ret = f.read() print(ret) f.close() #写入文件,writelines()参数是序列,比如列表,它会迭代帮你写入文件 f = open('test.txt','a+',encoding='utf-8') f.writelines(["aa","bb","cc"]) ret = f.read() print(ret) f.close() #判断文件是否是统一tty设备 f = open('test.txt','r+',encoding='utf-8') ret = f.isatty() print(ret) #False f.close() #判断是否可读(不可读则报错" No such file or directory: ") f = open('test.txt','r+',encoding='utf-8') ret = f.readable() print(ret) #True f.close() #指定文件中指针的位置 f = open('test.txt','r+',encoding='utf-8') ret = f.read(8) #先读取8个字符 print(ret) f.seek(0) #然后把指针移动到文件开头处 ret = f.read(8) #在重新读取 print(ret) f.close() #获取指针位置 f = open('test.txt','r+',encoding='utf-8') ret = f.read(8) #先读取8个字符 print("pointer position:%s"%f.tell()) #查看当前指针位置 print(ret) f.seek(0) #重置指定到启始位 print("pointer position:%s"%f.tell()) #在查看指针位置 f.close() #截断文件数据,仅保留指定之前数据(指定字节数) f = open('test.txt','r+',encoding='utf-8') f.truncate(8) #文件只保留前8个字节数据,文件后面数据的全部删除 ret = f.read() print(ret) f.close() #文件描述符 f.fileno() #刷新文件内部缓冲区 f.flush()