能调用方法的内容一定是对象,文件本身也是对象
1. open()
open() 方法作为文件处理的开头,返回操作文件的句柄
一般用法:
f = open('./test.txt', 'r', encoding= 'utf-8')
commad...
f.close()
或者:
with open('./test.txt', 'r', encoding= 'utf-8') as f:
f.read()
command #接下来再处理其他代码即可
一般比较推荐使用第二种做法,不用注意最后是否关闭文件
但是第一种用法一定要注意关闭文件,Python内部自带的关闭文件的机制不一定靠谱
2、文件操作方式:r、w、a、r+、w+、a+
2.1 r 读模式,不可写
with open('./test.txt', 'r', encoding= 'utf-8') as f:
f.read()
f.write('alex') #报错
2.2 w 写模式,执行打开命令清空文件,不可读
with open('./test.txt', 'w', encoding= 'utf-8') as f:
f.read() #报错
f.write('alex')
2.3 a 追加模式,不清空文件,文档末尾追加,可写不可读
with open('./test.txt', 'a', encoding= 'utf-8') as f:
f.read() #报错
f.write('alex')
2.4 w+ 写读,光标规则恶心
规则:(读、写操作光标独立)
- 打开文件,光标停留在文档开头,清空内容
- 执行写,光标一定会移动到末尾,进行写入,并停留
- 执行读,光标会回位到之前读操作停留的位置进行读取,读完之后光标返回之前写的位置
- seek()方法可设定的位置,但读操作起作用;写的话一定会执行上面的写规则
f = open('小重山', 'w+', encoding='utf-8')
print('起始光标: ', f.tell())
print('内容1: ', f.readline().strip())
print('光标1: ', f.tell())
f.write('1 zhaore\n2 zhaore\n')
f.write('3 zhaore\n4 zhaor\n')
f.write('5 zhaore\n6 zhaor\n')
print('【写光标】: ', f.tell())
print(('光标重置: '+str(f.seek(0))).center(30, '-'))
print('内容2: ', f.readline().strip())
print(