【文件的读模式】
文件的对象:文件的读写通过文件操作对象进行。
Python2 ----- File
Python3 ----- TextIOWrapper
文件的打开:
内置函数open(file,mode) --- 打开文件,获取文件操作对象。
一定要有file文件路径(路径、文件名、文件格式) 否则报错。
fo = open(fileDir) ----- 只读
路径的写法:①绝对路径 ----- 从根目录开始的
②相对路径 ------ ./当前位置 ../ 上一级
fileDir = \'C:/test.txt\'
fileDir = \'C:\\test.txt\'
fileDir = r\'C:\test.txt\' --- 取消转义
读模式:如果该文件不存在会报错!
fo = open(dileDir, \'r\') <==> fo = open(fileDir)
fo.tell() -------------- 从0开始 显示指针位置
fo.read(2) ------------ 读2个字符
fo.read() -------------- 读全部内容
文件中的换行是2个长度 \n \'a\nb\' ----- 字符串中是一个
fo.close() --- 关闭文件
移动文件指针位置:seek()
0模式: --- 绝对位置模式 fo.seek(1,0) 从0开始 一般像txt、log r
前提:python3 一定在\'rb\'模式下 ---- 二进制模式 --- 非文本文件(图片)
1模式:当前位置开始移动 fo.seek(移动的位数,模式1) ----- 如:fo.seek(-1, 1) rb
移动的位数 正数:向后移 负数:向前移
2模式: ---从尾部位置开始 fo.seek(-1,2) rb
移动的位数 正数:向后移 负数:向前移
代码例子:
fileDir = \'C:/test.txt\'
fo = open(fileDir, \'rb\') # 打开文件
print(\'读前\',fo.tell()) # 显示指针当前位置
print(fo.read(2)) # 读2个字符
print(\'读后\',fo.tell()) # 再次显示指针当前位置
fo.seek(2,2) # 移动向后移动两位
print(‘移动后’,fo.tell()) # 再一次显示指针当前位置
readline: 读取一行
1 - 该方法返回是print(type(fo.readline())) --- <class \'str\'>
2 - 文件指针会做相应的偏移
readlines:读取所有行
1 - 该方法返回的是print(type(fo.readlines())) --- <class \'list\'>
区别:① fo.read() -------- 返回str
② fo.readlines() -------- 返回是list
2 - fo.read().splitlines() --- 返回list 而且去掉换行符
=================================================================================
【文件写模式】:
写模式特点:可以新建文件,若文件不存在则会创建一个新文件;
如果写模式打开一个文件,所有的内容会被清空。
1 - fo = open(fileDir, \'w\')
2 - 如果该路径下的文件存在 --- 会清空
3 - 如果该路径下的文件不存在 ---- 会新建
4 - 在pycharm里面,你执行了fo.write(\'123\') ----- 可以直接写进去
5 - fo.write(\'123\') --- 返回值 ---- 写的字符长度
6 - fo.flush() 强行写入文件
7 - fo.close() 关闭文件会强行写入文件
追加模式 a:只是为了在文件末尾追加内容而打开文件
with open方式:
1 - with open(fileDir) as rFile: ------等价于--------- rF = open(fileDir)
2 - 可以省略fo.close()
3 - 操作多个文件
seek: 1 - (1,模式) --- 0模式 ---- 绝对位置,从0开始
2 - (1,模式) --- 1模式 ---- 当前位置,开始
3 - (1,模式) --- 2模式 ---- 尾部位置,开始
例子:
fileDir2 = open(\'C:/text.txt\', \'w\')
fileDir2.write(\'123456\') # 一定是str
# 如果写入时,需要换行时,应该怎么做?
fileDir2.write(\'01-test\'+\'\n\')
fileDir2.write(\'02-test\')
fileDir2.flush() # 写入
fileDir2.close() # 关闭 同样也会保存