文件的打开方式

文件的打开方式


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:UsersAdministratorDesktop1.txt',encoding='utf-8')   #  ======>>>  f 为文件句柄,文件操作符
# print(type(f))                                              #    <class '_io.TextIOWrapper'>
# f.read()
# f.readline()
# f.readlines() #------->>>> 返回一个列表
# f.close()
 #   都是依赖于光标位置
复制代码
复制代码
r 打开  需要转换编码格式 然后直接读 

 file=open('D:\sdas\sadsad1.txt',encoding="gbk",mode='r') 

 path=r'C:UsersAdministratorDesktop1.txt'
 file=open(path,encoding='utf-8',mode='r')
 a=file.read()
 print(a)
 file.close()
复制代码
复制代码
rb 打开  内存中是 byte  可以直接打开 但是  读的时候需要 decode解码      >>  上传,下载文件 

file=open('D:\sdas\sadsad1.txt',mode='rb')       >>>>  二进制 bytes

path=r'C:UsersAdministratorDesktop1.txt'
file=open(path,'rb')

a=file.read().decode('gbk')
print(a)
file.close()
复制代码


2 写 会清空原文件---要确保源文件不存在
# f =open(r'C:UsersAdministratorDesktop1.txt','w',encoding='utf-8')
# f.writelines([]) # 写入 按列表遍历写入   # 注意光标位置
# f.write('mystr')
#
# f.close()
复制代码
-w-----  -需要解码  encoding=' ' mode=''

 path=r'C:UsersAdministratorDesktop2.txt'
 file=open(path,mode='w',encoding='utf-8')
 file.write('adasdad')
 file.close()
复制代码
复制代码
----wb----直接打开 需要 写的时候需要制定 编码格式

 path=r'C:UsersAdministratorDesktop2.txt'
 file=open(path,'wb')
 file.write('哈哈哈'.encode('utf-8'))
 file.close()
复制代码


3 读写 r+ 不会删除原内容
复制代码
# f =open(r'C:UsersAdministratorDesktop1.txt','r+',encoding='utf-8')
#
# f.readline()
# f.write('mystr')  # 如果读了 默认是在最后添加======  如果不读 只写  默认在最前写
#
# f.close()
复制代码

复制代码
-a--

 path=r'C:UsersAdministratorDesktop3.txt'
 file=open(path,'a',encoding='utf-8')
 file.write('哈')
 file.close()
复制代码
---ab---
 path=r'C:UsersAdministratorDesktop3.txt'
 file=open(path,'ab')
 file.write('哈'.encode('utf-8'))
 file.close()

4 文件修改
复制代码
 原文件 读取内容 ----->>>  修改后 ----->>> 重新新建一个文件 接收---->>> 删除原文件

# import os
# file= open(r'C:UsersAdministratorDesktop1.txt','r',encoding='utf-8')
# file2=open(r'C:UsersAdministratorDesktop2.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:UsersAdministratorDesktop1.txt')
# os.rename(r'C:UsersAdministratorDesktop2.txt',r'C:UsersAdministratorDesktop1.txt')


# file2=open(r'C:UsersAdministratorDesktop2.txt','w',encoding='utf-8')
# with open(r'C:UsersAdministratorDesktop1.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:UsersAdministratorDesktop1.txt')
# os.rename(r'C:UsersAdministratorDesktop2.txt',r'C:UsersAdministratorDesktop1.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:UsersAdministratorDesktop3.txt',mode='rb') as file:
   file.read()
原文地址:https://www.cnblogs.com/hzqblog/p/7515678.html