文件的打开方式
文件的打开方式
open(path,enconding='',mode='')
打开文件的模式:
文件(保存文件格式) ---- 打开文件(指定编码格式) ----打开模式 读取utf-8编码数据,转换成 unicode(str)编码的数据
文件打开方式种类 r w a r+ w+ a+ rb wb ab rw+ wb+ ab+ 12种
1 读
# f =open(r'C:\Users\Administrator\Desktop\1.txt',encoding='utf-8') # ======>>> f 为文件句柄,文件操作符 # print(type(f)) # <class '_io.TextIOWrapper'> # f.read() # f.readline() # f.readlines() #------->>>> 返回一个列表 # f.close() # 都是依赖于光标位置
r 打开 需要转换编码格式 然后直接读
file=open('D:\\sdas\\sadsad\1.txt',encoding="gbk",mode='r')
path=r'C:\Users\Administrator\Desktop\1.txt'
file=open(path,encoding='utf-8',mode='r')
a=file.read()
print(a)
file.close()
rb 打开 内存中是 byte 可以直接打开 但是 读的时候需要 decode解码 >> 上传,下载文件
file=open('D:\\sdas\\sadsad\1.txt',mode='rb') >>>> 二进制 bytes
path=r'C:\Users\Administrator\Desktop\1.txt'
file=open(path,'rb')
a=file.read().decode('gbk')
print(a)
file.close()
2 写 会清空原文件---要确保源文件不存在
# f =open(r'C:\Users\Administrator\Desktop\1.txt','w',encoding='utf-8')
# f.writelines([]) # 写入 按列表遍历写入 # 注意光标位置
# f.write('mystr')
#
# f.close()
-w----- -需要解码 encoding=' ' mode=''
path=r'C:\Users\Administrator\Desktop\2.txt'
file=open(path,mode='w',encoding='utf-8')
file.write('adasdad')
file.close()
----wb----直接打开 需要 写的时候需要制定 编码格式
path=r'C:\Users\Administrator\Desktop\2.txt'
file=open(path,'wb')
file.write('哈哈哈'.encode('utf-8'))
file.close()
3 读写 r+ 不会删除原内容
# f =open(r'C:\Users\Administrator\Desktop\1.txt','r+',encoding='utf-8')
#
# f.readline()
# f.write('mystr') # 如果读了 默认是在最后添加====== 如果不读 只写 默认在最前写
#
# f.close()
-a--
path=r'C:\Users\Administrator\Desktop\3.txt'
file=open(path,'a',encoding='utf-8')
file.write('哈')
file.close()
---ab---
path=r'C:\Users\Administrator\Desktop\3.txt'
file=open(path,'ab')
file.write('哈'.encode('utf-8'))
file.close()
4 文件修改
原文件 读取内容 ----->>> 修改后 ----->>> 重新新建一个文件 接收---->>> 删除原文件
# import os
# file= open(r'C:\Users\Administrator\Desktop\1.txt','r',encoding='utf-8')
# file2=open(r'C:\Users\Administrator\Desktop\2.txt','w',encoding='utf-8')
#
# for line in file:
# mylist=line.split('|')
# mylist[0]=mylist[0]+'_handsomeguy'
# mystr='|'.join(mylist)
# # print(mystr)
# file2.write(mystr)
# file.seek(0)
# print(file.read())
#
# file.close()
# file2.close()
#
#
# os.remove(r'C:\Users\Administrator\Desktop\1.txt')
# os.rename(r'C:\Users\Administrator\Desktop\2.txt',r'C:\Users\Administrator\Desktop\1.txt')
# file2=open(r'C:\Users\Administrator\Desktop\2.txt','w',encoding='utf-8')
# with open(r'C:\Users\Administrator\Desktop\1.txt','r',encoding='utf-8') as file1:
# for line in file1:
# mylist=line.split('|')
# mylist[0]=mylist[0][0:2]
# mystr='|'.join(mylist)
# file2.write(mystr)
# file2.close()
#
# import os
#
# os.remove(r'C:\Users\Administrator\Desktop\1.txt')
# os.rename(r'C:\Users\Administrator\Desktop\2.txt',r'C:\Users\Administrator\Desktop\1.txt')

5 常用的文件操作函数方法
按格式读长度----file.read(2) r--->字符 rb--->字节
------seek-->>>> 后面是字节 -------指定指针位置------file.seek(2)----字节数----gbk--2个字节一个汉字 -------指定指针位置------file.seek(3)----字节数----utf-8--3个字节一个汉字
--查看当前指针位置------file.tell()----
--file.writable()------file.readable()----
--------------file.readline()- 读一行-------------------------- ---------------file.truncate()- 截取 指针位置前面的数据----------------------- --------------file.readlines()-----读取后全部保存到内存------------
-------------一般文件操作没有完成硬盘上的时候,数据不会存在---------- ---------------file.flush()----从内存强刷到硬盘------------------
readline() --------- 每行 for line in file: print(line.read()) ========>>>>> # python 2 xreadlines()
关闭文件操作 with open(r'C:\Users\Administrator\Desktop\3.txt',mode='rb') as file: file.read()


浙公网安备 33010602011771号