day 07 文件操作

一、什么是文件?
操作系统提供给用户操作复杂硬件(硬盘)的简易的接口

2.为什么操作文件
人或者应用程序需要永久的保存数据

3.三个使用方法:

f = open()
f.read()  #  向操作系统发请求 读取文件内容
f.close()   #  告诉操作系统 关闭打开的文件

4.形式:

#  r取消转义

f=open(r'地址或相对地址',encoding='utf-8')

print(f.read())

5.通过python代码操作文件:

#   f是文件对象。f仅仅是一个变量名 你把它看成是一个遥控器

f = open(r'C:Program FilesfeiqRecv Filesday05a.txt',encoding='utf-8') 

print(f) 

print(f.read())    # 读取文件。

#  此时pyhton中‘f’被垃圾清理掉;而windows系统没有文件,使用.close关闭文件

.close

#windows操作系统默认的编码是gbk.因此需要指定dicoding=utf-8

5. 文件上下文操作

格式:

with open(r'地址或相对地址',encoding='utf-8') as f:
  print(f.read())
with open(r'C:Program FilesfeiqRecv Filesday05a.txt',encoding='utf-8') as f :
 #  f仅仅是一个变量名 你把它看成是一个遥控器。在as后面加入,表示同时打开多个
  print(f)
  print(f.read())

二、文件的打开模式

r 只读模式

w 只写模式
a 追加写模式
操作文件单位的方式
t 文本文件   # t在使用的时候需要指定encoding参数 如果不指定,默认是操作系统的默认编码;t文本文件只针对文本,不支持图片
b 二进制    #无需指定encoding编码。二进制不需要编码。针对图片等。最主要二进制代码可以发送出去

 2.1 格式

1.针对一般文本t

with open(r'相对地址或绝对地址',mode='rt',encoding='utf-8') as f:

  print(f.read())

2.针对图片b

with open(r'相对地址或绝对地址' mode=rb) as f

  print(f.read())

注意:

1.mode参数名可以不写,默认就是r和t(只读文本),如果只写w或a,默认加上t,这个t默认也是不写

2.print(f.read())

r模式在打开文件的时候 如果文件不存在 直接报错。这是与w模式和a模式不一样的地方。w和a则会新建一个文档

mode关键字可以不写:如下

 with open(r'a.txt',mode='r',encoding='utf-8') as f:
 with open(r'a.txt','r',encoding='utf-8') as f1:  
    # print(f.readable())  # 是否可读
    # print(f.writable())  # 是否可写
   read将文件内容一次性读出,不可重复读出。因为光标始终在最后了。以下演示读取两次
    # print(f.read())  
    # print('>>>2:')
    # print(f.read()) #无结果,但不报错
f文件对象的内置方法(取出文件内容):
1.readlines
 print(f.readlines())  # 返回的是一个列表  列表中的一个个元素对应的就是文件的一行行内容
#  ['fdsfsdfafasdfasdffsdfas
', 'fsdf
', 'sdaf
', 'sa
', 'fs
', 'ef
', 'f']
.readines的原理就是for循环取值
for line in f:  # f可以被for循环 每for循环依次 读一行内容
      print(i)  # 这个方法就可以解决大文件一次性读取占用内存过高的问题;
            对比之前.read()一次读取

2.readlin()#  对比1,没有s,顾名思义,打印一行.readline则读取一行 
print(f.readline())  # 注意加,end=‘’取消换行
 print(f.readline())
 print(f.readline())
 print(f.readline())
 w模式:w模式一定要慎用
 1.文件不存在的情况下 自动创建该文件
 2.当文件存在的情况下 会先清空文件内容再写入
w模式中f.write()方法:一次写一行
 with open(r'xxx.txt','w',encoding='utf-8') as f:
     print(f.readable())  # 是否可读
     print(f.writable())  # 是否可写
     f.write('不不不,你没有翻~
')
     f.write('不不不,你没有翻~
')
     f.write('不不不,你没有翻~
')
     f.write('不不不,你没有翻~
')
     f.write('不不不,你没有翻~')

w模式中f.writelines()方法:一次写多行。传容器类型,将列表写入文件
     l = ['不sdffs,sdfs有翻~
','不sdfsdf不,你sdfsf翻~
','不sfad不,你没sa翻~
']
     f.writelines(l)
     # 上下等价
     for i in l:
    #     f.write(i)
a模式:追加写模式。在文件末尾写内容
1.当文件不存在的情况下 自动创建该文件
 2.当文件存在的情况下,不清空文件内容, 文件的光标会移动文件的最后
 with open(r'yyy.txt',mode='a',encoding='utf-8') as f:
     print(f.readable())  # 是否可读
     f.write('我是小尾巴
')
 
原文地址:https://www.cnblogs.com/ZDQ1/p/11139343.html