文件的读写

文件的读取

# file=open('read1','r',encoding='utf-8')
# print(file.read())
# file.closed

file=open('read1','r',encoding='utf-8')
# print(file.readline(),end='')#加上end='' 去掉自动换行
# print(file.readline())
# file.closed
print(file.readlines())

写文件

file=open('write1','w',encoding='utf-8')#如果没有文件会创建新的文件,如果有则会覆盖原文件
file.writelines(['你是一头小毛驴。\n 我从来都不骑\n', '有一天……'])#全是字符串,不能带数字
file.closed

追加文件

file=open('read1','a',encoding='utf-8')
file.write('哈哈哈')
file.closed

文件其他处理模式

# f=open('xxx','r+',encoding='gbk')
# # data=f.read()
# # print(data)
# # f.write('123sb')
#
#
#
# f.write('sb')


#文件修改
# src_f=open('xxx','r',encoding='gbk')
# data=src_f.readlines()
# src_f.close()
#
# # for i in data:
# #     print(i)
# print(data)
# dst_f=open('xxx','w',encoding='gbk')
# # dst_f.writelines(data)
# dst_f.write(data[0])
# dst_f.close()
#with open 内部封装了close 不用单独写close
# with open('a.txt','w') as f:
# f.write('1111\n')
# src_f=open('xxx','r',encoding='gbk') 
#
dst_f=open('xxx','w',encoding='gbk')

#with 可以同时打卡多个文件 # with open('xxx','r',encoding='gbk') as src_f,\ # open('xxx_new','w',encoding='gbk') as dst_f: # data=src_f.read() # dst_f.write(data)#这就是从src_f中读取文件,原封不动的写到dst_f f=open('a.txt') print(f.encoding) #查看文件编码

 二进制方式读取文件;因为文件中可能不只有文本,还可能有图片等,二进制方式打开文件还能跨平台

# f=open('test11.py','rb',encoding='utf-8') #b的方式不能指定编码
# f=open('test11.py','rb') #b的方式不能指定编码
# data=f.read()
# #'字符串'---------encode---------》bytes
# #bytes---------decode---------》'字符串'
# print(data)
# print(data.decode('utf-8'))
# f.close()


# f=open('test22.py','wb') #b的方式不能指定编码
# f.write(bytes('1111\n',encoding='utf-8'))
# f.write('杨件'.encode('utf-8'))

f=open('test22.py','ab') #b的方式不能指定编码
# f.write('杨件'.encode('utf-8'))

# open('a;ltxt','wt')

 文件的其他操作:

# f=open('a.txt','r+',encoding='gb2312')
# # data=f.read()
# # print(data)
# f.write('你好')

# f=open('b.txt','r+',encoding='latin-1')
# data=f.read()
# print(data)
# f.write('aaaaaaaaaaa')

# f=open('b.txt','r',encoding='utf-8',newline='') #读取文件中真正的换行符号
# f=open('b.txt','r+',encoding='utf-8',newline='') #读取文件中真正的换行符号

# print(f.closed)
# print(f.encoding)
# f.flush()
# print(f.readlines())

# print(f.tell())
# f.readline()
# print(f.tell())

# f.seek(1)
# print(f.tell())
# print(f.readlines())
# f.seek(3)
# print(f.tell())
# print(f.read())

# data=f.read(1)
# print(data)

# f.truncate(10)


# f.flush() #讲文件内容从内存刷到硬盘
#
# f.closed #文件如果关闭则返回True
#
# f.encoding #查看使用open打开文件的编码
# f.tell() #查看文件处理当前的光标位置
#
# f.seek(3) #从开头开始算,将光标移动到第三个字节
# f.truncate(10) #从开头开始算,将文件只保留从0-10个字节的内容,文件必须以写方式打开,但是w和w+除外
#
# f=open('d.txt','r',newline='')
#
# data=f.readline().encode('utf-8')
# print(data)
# print(f.tell())







# f=open('seek.txt','r',encoding='utf-8')
# print(f.tell())
# f.seek(10)
# print(f.tell())
# f.seek(3)
# print(f.tell())

# f=open('seek.txt','rb')
# print(f.tell())
# f.seek(10,1)
# print(f.tell())
# f.seek(3,1)
# print(f.tell())


# f=open('seek.txt','rb')
# print(f.tell())
# f.seek(-5,2)
# print(f.read())
# print(f.tell())
# f.seek(3,1)
# print(f.tell())









# f=open('日志文件','rb')
# data=f.readlines()
# print(data[-1].decode('utf-8'))

f=open('日志文件','rb')

# for i in f.readlines():
#     print(i)

#循环文件的推荐方式
# for i in f:
#     print(i)

for i in f:
    offs=-10
    while True:
        f.seek(offs,2)
        data=f.readlines()
        if len(data) > 1:
            print('文件的最后一行是%s' %(data[-1].decode('utf-8')))
            break
        offs*=2

 

posted @ 2018-09-10 16:14  valar-dohaeris  阅读(153)  评论(0编辑  收藏  举报