文件相关操作

发布时间 2023-05-24 16:18:29作者: Maverick-Lucky

文件的基本操作

  文件的基本操作分为三步骤:1.打开文件

               2.操作文件

                  3.关闭文件

1. 打开文件

  关键字: open

f = open(r'a.txt', 'r',  encoding='utf8')
# f = open(r'a.txt', 'r', encoding='utf-8')
print(f)   # 操作系统打开的文件

# 当encoding=‘utf8’ 报错时,就换成 encoding=‘utf-8’。

2. 操作文件: 读、写

res = f.read()
print(res)

# 关闭文件:释放资源
f.close


# 方式2:
# with上下文管理器
with open('a.txt', 'r' ,encoding='utf8')  as f:
      print(f.read())

文件的读写模式

  r:read(读)

  w:write(写)

  a:append(追加写)

# 读模式
# 1. 路径不存在,直接保存
with open('a.txt', 'r', encoding='utf8') as f:
    pass


#2. 路径存在
with open('a.txt', 'r', encoding='utf8') as f:
      print(f.read())

# 写模式
# 1. 路径不存在,会自动创建出文件
with open('a.txt', 'w', encoding='utf8') as f:
      pass

'''
我们真正的代码以后是运行在Linux系统里面的
'''

# 2. 路径存在
# 把文件内的原本数据清除掉,重新写入,覆盖之前所有的数据
# w模式很危险
with open('a.txt', 'w', encoding='utf8') as f:
      f.write(str())   # 写文件的数据类型必须是字符串和字节类型,其他类型都不能直接写入
# 3. 追加模式
# 3.1 路径不存在,会自动创建文件出来
with open('a.txt', 'a', encoding='utf8') as f1:
      f1.write('hello baby!')
      pass

# 3.2 路径存在,在文件的原来数据后面继续追加新的内容
with open('a.txt', 'a', encoding='utf8') as f1:
      f1.write('hello baby!\n')

文件的操作方法

1. 读系列

# 1.读系列
with open('a.txt', 'r', encoding='utf8') as f:
      print(f.read())
# 一次读取文件的一行内容,一行一行的读取
       print(f.readline())   # hello worldhello baby!hello baby!
       print(f.readlines())   # ['hello world\n', 'hello baby!\n','hello baby!\n', 'hello baby!\n']  \n 换行符也算是字符
# 判断文件是否可读
       print(f.readable())

2. 写系列

# 2.写系列
with open('a.txt', 'w', encoding='uft8') as f:
      f.write('helllo baby')
      f.write(str(123))   # 只能写字符串
      print(f.writebale())   # True
      print(f.readable())    # False
      f.writelines(['hello\n, 'world\n', 'kevin' ,'jack'])

文件的读操作优化

with open('a.txt', 'r' ,encoding='uft8') as f:
    print(f.read())   # 一次性把文件中的内容读取完毕
   read 方法是一次性读取文件的所有内容,所以,当文件内容非常大的时候,有可能会造成内存溢出,我们是不允许内存溢出的情况出现,但是当文件内容非常小的时候,无所谓了,针对上述出现的问题,该如何解决呢?

  变量f是支持for循环的

for line in f:
     print(line)   # for循环就是一行一行的读取内容的

'''

所以,以后读文件的时候,如果觉得文件很大,我们就是for循环一行一行的读取

'''

文件操作模式

t模式:text文本

  r >>>>  rt

       w >>>> wt

  a >>>> at

'''

  1. 它是以字符串为基本单位

  2.只能操作字符串形式

  3.encoding参数必须写

'''

b 模式: bytes二进制模式

  r >>>>  rb

  w >>>> wb

  a >>>> ab

'''

  1.b 不能省略,必须写rb

  2.可以操作任意的数据类型:视频、音频、图片等都可以

  3. encoding参数一定不能写

  4. 数据以字节为单位

'''