#coding:utf-8
#Python文件处理
#文件操作open
#文件操作的模式
#文件句柄对象
#Python上下文管理器
#文件异常处理
#中间层(操作系统文件的接口方法)
#open-->操作系统文件处理的接口方法--->操作文件
#Python2和Python3
#Python2
#f=file('ben.py','w')
#file=open('tom.py','w')
#python,open保留下来了
#f=open('abc.py','w')
#f=open('work.py','w') #f文件对象,第一个参数文件名称,第二个参数是模式
#print(type(f))
#f.write('hello,ben') #write-->写 read--->读取数据
#f.write('\n')
#f.write('今天天气有点冷')
#f.close() #解释文件句柄对象---->释放资源
#第一个参数(使用相对路径)
#模式()
#如果写入数据乱码--->编码问题
#如果当前这个文件名字已经存在,就打开,如果不存在就创建
#模式确定('w'--->会覆盖原有数据(全部清空,然后再写入数据,追加数据))
#
#第一步:创建文件句柄对象
#文件读取第一种方式:
# file=open('work.py','r') #如果文件不存在会出现异常
# result=file.read() #一次性读取所有数据,默认留(),有参数的的时候表示读取多少字节数
# print(result)
# file.close() #读取玩数据之后,关闭文件句柄对象,释放资源
#文件读取第二种方式:readline
# file=open('work.py','r') #如果文件不存在会出现异常
# result=file.readline() #读取一行数据,有参数表示读取多少字节数
# print(result)
# file.close() #读取玩数据之后,关闭文件句柄对象,释放资源
#文件读取第三种数据:readlines() 返回一个列表
# file=open('work.py','r') #如果文件不存在会出现异常
# result=file.readlines(1) #读取文件所有的数据
# print(result)
# file.close() #读取玩数据之后,关闭文件句柄对象,释放资源
#文件操作模式
#r模式,读模式
#w模式,写模式
#a模式,追加模式
#r+,w+,a+
#追加模式,a模式---->append(追加),在末尾追加数据
#r+模式,如果文件不存在会报错,文件存在的时候,可读数据,也可以写数据
# file=open('work.py','r+')
# result=file.read()
# print(result)
# file.write('\n模式')
#file.close()
#w+模式,如果文件不存在,会报错,可以读数据,可以写数据,覆盖原有数据
#file=open('work.py','w+') #覆盖原有数据
#file.write('\n模式')
#file.seek(0)
#result=file.read()
#print(result)
#file.close()
#a+模式
#file=open('work.py','a+') #覆盖原有数据
#file.write('\n模式')
#file.seek(0)
#result=file.read()
#print(result)
#file.close()
#文件句柄对象
#f=open('work.py','r')
#for line in f: #read() readlines() readline()
# print(line)
#文件句柄对象是是迭代对象
#通过这种方式读取数据:优点很多行内存小
#上下管理器文件的操作
#with关键字---->上下管理,with内置open()--->文件对象,取别名
#with open('work.py','r') as f:#f---->open返回对象
# for line in f: #内存优化文件读取
# print(line.strip())
# with open('work.py','a+') as f:#f---->open返回对象
# f.seek(0) #不添加在a+模式下打印不出来
# for line in f: #内存优化文件读取
# print(line.strip())
# f.write('\n加最后一行数据')
#写入多行数据
# with open('work.py','a+') as f:#f---->open返回对象
# result_list=['你是谁','\n','我是谁','\n','加最后一行数据']
# f.writelines(result_list)
# f.seek(0) #不添加在a+模式下打印不出来,有没有数据,是由文件指针位置决定的,位置在末尾,读取不到数据
# for line in f: #内存优化文件读取
# print(line.strip())
# f.write('\n加最后一行数据')
#errors='ignore',如果遇到错误编码,处理方式是忽略
# try:
# f=open('ben.py','r',errors='ignore')
# conn=f.read()
# print(conn)
# f.close()
# except Exception as e:
# print(e)
# finally:
# print('最后一步处理')
#a+模式里面读取数据,不小心读取空数据()
#a+模式要注意指针的位置
with open('ben.py','a+') as f:
f.write('你好')
print(f.tell())
print(f.read())
f.seek(0)
print(f.read())
f.writelines('aa')