本节大纲
文件的打开方式
文件内容读取
文件内容写入
文件扩展用法
文件的打开方式
init:初始化配置文件
conf:配置文件
csv:参数化文件
yaml:用例文件
通过代码打开(文件在内存中打开,肉眼看不到)
文件的读写通过文件操作对象进行
Python2 file ------- python3 textIOWrapper
第一步:打开文件
内置函数open 打开文件,获取文件操作对象
# 绝对路径
fileDir = 'G:/a.txt'
fileDir = 'G:\\a.txt' # 反斜杠不许使用两个,否则找不到路径
fileDir = r'G:\a.txt' # r取消转义
# 相对路径使用./表示 当前路径:./a.txt
file_object = open(file_name,mode='r') # file_name路径+文件名+后缀名,mode='r'可缺省参数
# 2- 文件读写
fileDir = r'/Users/liying/Desktop/a.txt' # r取消转义
file_object = open(fileDir,mode='r') # file_object接收open函数在程序运行之后在缓存里面开辟一个空间存放文件对象,文件对象名称file_object
"""
如果文件不存就报错:FileNotFoundError: [Errno 2] No such file or directory: 'G:\\a.txt'
排除问题:
到该文件路径查看是否存在该文件
该文件后缀名是否正确
"""
# print(file_object) # 查看文件类型
#print(file_object.read()) # read(不填参数全部读取,写参数就读取指定个数)
print(file_object.read(2)) # 读取2个长度
# 3- 文件指针
print(file_object.tell()) # 获取文件指针
文件内容读取
# 文件读写
fileDir = r'/Users/liying/Desktop/a.txt' # r取消转义
file_object = open(fileDir,mode='r') # file_object接收open函数在程序运行之后在缓存里面开辟一个空间存放文件对象,文件对象名称file_object
"""
如果文件不存就报错:FileNotFoundError: [Errno 2] No such file or directory: 'G:\\a.txt'
排除问题:
到该文件路径查看是否存在该文件
该文件后缀名是否正确
"""
print(file_object) # 查看文件类型
print(file_object.read()) # read(不填参数全部读取,写参数就读取指定个数)
print(file_object.read(2)) # 读取2个长度
# 文件指针
print("操作前---->",file_object.tell()) # 获取文件指针
print(file_object.read(2)) # 读取2个长度
print("操作后---->",file_object.tell()) # 获取文件指针
# seek光标移动
file_object.seek(1,0) # seek(位置下标,模式:默认为0模式,0模式:永远从0开始算起)
print('seek--->',file_object.tell())
"""
windows 文件中换行是 \r\n -- 2个长度
Mac linux --- 文件中换行 \n -- 一个长度
模式0:从开始位置计算 -- 绝对位置 -- r -- 读取到是字符串
模式1:从当前位置计算 -- 相对位置 -- ‘rb’-- 读取到是byte
模式2:从最后位置计算 -- ‘rb’ -- 读取到是byte
r:一般处理文本文档,log ini txt cnf 返回值是字符传
rb:音频 视频 图片 pcap 以二进制读取 保存byte,如果获取byte字节的内容,就可以使用rb模式读
"""
# 文件读取一行
print(file_object.readline())
# 文件读取多行,读取到是列表--列表就可以通过下标获取指定行
print(file_object.readlines())
print(file_object.readlines()[1]) # 获取下标为1的一行
# 如果文件中多行数据读取存在换行符,使用splitlines()切割换行符
res = file_object.read().splitlines()
print(res)
file_object.close() # 关闭文件
文件内容写入
"""
写模式-w
为了写文件而打开文件,如果文件已存在则其内容会被清空,如果文件不存在,则新建一个文件
"""
fileDir = r'/Users/liying/Desktop/a.txt' # r取消转义
file_object = open(fileDir,'w')
file_object.write('abcedefgyi')
file_object.flush() # 刷新,会保存文件内容,刷新之后可以继续写
file_object.close() # 关闭,会保存文件内容,关闭之后不可写
"""
追加模式 a
为了在文件末尾追加内容而打开文件
如果文件存在,文件指针在文件的结尾
如果文件不存在,则创建一个文件
文件内容追加:
123456789
ABCDEFG
"""
fileDir = r'/Users/liying/Desktop/a.txt' # r取消转义
file_object = open(fileDir,'a')
file_object.write('\n123456789 \nABCDEFG')
file_object.flush()
file_object.close()
文件扩展用法
r+
为了读取并且写文件而打开文件。如果文件不存在,就报错。文件指针在文件开头。
w+
为了读取并且写文件而打开文件。如果文件不存在,就创建一个文件。文件指针在文件开头。如果文件已存在,文件内容将被清空
a+
为了读取并且写文件而打开文件。如果文件不存在,就创建一个文件。文件指针在文件结尾。很多OS上写操作永远在文件结尾进行,不管是否用了seek
fileDir1 = r'/Users/liying/Desktop/a.txt' # r取消转义
fileDir2 = r'/Users/liying/Desktop/b.txt' # r取消转义
with open(fileDir1) as fo1,open(fileDir2) as fo2: # with open:1,可以操作多个文件;2,可以省略close; file_object=fo
pass
网友评论