#文件,读取标签:25,utf,文件,Python,data,encoding,print,txt,open From: https://www.cnblogs.com/liu-zhijun/p/18372125
# f.flush() 将文件内容从内存刷到硬盘
# f.closed 文件如果关闭则返回True
# f.encoding 查看使用open打开文件的编码
# f.tell() 查看文件处理当前的光标位置
# f.seek(3) 从开头开始数,将光标移动到第三个字节
# f.truncate(10) 从开头开始算,将文件只保留从0-10个字节的内容,文件必须是以写方式打开,但是w和w+除外
f = open('wen.txt', encoding='utf-8')
data = f.read()
print(data)
# #1要在同一个文件夹下,如不在则提供完整路径,2.文件类型要附带上
# print(f.readable())
print(f.readline())
print(f.readlines())
f.close()
#文件,写入
f = open('wen.txt','w',encoding='utf-8') #w会清空wen.txt文件里面的所有内容
f.write('1111\n') #写入内容,会在wen.txt里面显示
f.write('22222\n')
f.writelines(['fdasf\n','666\n']),#文件里面全是字符串,写其他类型如数字,会报错
f.close() #文件如果关闭则返回True
#文件,a用法
f = open('wen.txt','a',encoding='utf-8') #w会清空wen.txt文件里面的所有内容
f.write('ttttd\n') #写到文件最后
f.close()
with open ('xx','r',encoding='gbk') as src_f,\
open('xx_new','w',encoding='gbk') as dst_f:
data=src_f.reed()
dst_f.write(data)
#文件,r
src_f = open('xxx.txt','r',encoding='utf-8')
data=src_f.read() #先读取
src_f.close()
dst_f=open('xxx_new.txt','w',encoding='utf-8')
dst_f.write(data) #再写入另外一个
dst_f.close()
#文件2,r
src_f = open('xxx.txt','r',encoding='utf-8')
data=src_f.readlines() #先读取
src_f.close()
dst_f=open('xxx_new.txt','w',encoding='utf-8')
dst_f.writelines(data[0]) #再写入另外一个
dst_f.close()
#自动关闭
with open('a.txt','w') as f: #有with结尾不用谢close
f.write('111\n')
#rb的方式,不能指定编码
f=open('test11.py','rb')
data=f.read()
print(data) #windows的换行是\r\n,linux的是\n
#把二进制转换成字符串形式
#‘字符串’------encode------>>bytes
#bytes-------decode------->>'字符串'
print(data)
print(data.decode('utf-8'))
# 打开文件的模式
# 文件句柄 = open('文件路径', '模式')
# Character Meaning
# ‘r' open for reading (default)
# ‘w' open for writing, truncating the file first
# ‘a' open for writing, appending to the end of the file if it exists
# ‘b' binary mode
# ‘t' text mode (default)
# ‘+' open a disk file for updating (reading and writing)
# ‘U' universal newline mode (for backwards compatibility; should not be used in new code)
f=open('test2.py','wb') #b的方式不能指定编码
f.write(bytes('1111\n',encoding='utf-8')) #编码过程
f.write(bytes('1111\n',encoding='utf-8')) #编码过程
f.write('程序员'.encode('utf-8')) #直接编码
# f=open('test2.py',wb)
f=open('test2.py','ab')
open('a:1txt','wt')
print(f.closed) #判断是否关闭
print(f.encoding) #文件打开的编码
f=open('b.txt','r+'.encoding='latin-1') #以拉丁文的方式,尽可能多的
data=f.read()
print(data)
f.write('bacdedfas') #写中文会报错
print(f.tell)
f.flush() #flush将文件内容从内存刷到硬盘
f.readline()
f.seek(0) #光标跑到字节
print(f.tell)
print(f.read())
f.truncate(10) #截取,
# seek.txt hello 你好 123 123
f=open('seek.txt','r',encoding='utf-8')
print(f.tell())
f.seek(10) #默认的是从0 开始数
print(f.tell()) #这行代码使用 tell 方法获取文件指针的当前位置
f.seek(3,0) #0代表从文件开头开始数
print(f.tell())
# seek.txt hello 你好 123 123
f=open('seek.txt','rb') #要改成rb ,utf-8要去掉
print(f.tell())
f.seek(10) #默认的是从0 开始数
print(f.tell()) #这行代码使用 tell 方法获取文件指针的当前位置
f.seek(3,1) #1代表从上一次光标10的位置开始数,
print(f.tell())
f.seek(-5,2) #2代表从最后开始数,因为默认是包含\r\n的要算进去
print(f.tell())
# 取日志最后一行的方法
f=open('日志文件','rb')
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