欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

文件的各种操作

程序员文章站 2023-10-19 08:27:12
文件操作 只读 mode = 'r' mode = 'rb' 绝对路径:从磁盘开始查找的就是绝对路径 相对路径:相对与 上文件夹内容详解来查找的一种路径 文件路径推荐写法 用相对路径 只写 mode = 'w' mode = 'wb' a 模式 追加 'w' 只写 没有读的功能 打开word 打不开 ......

文件操作

f = open('文件的路径',mode = '打开文件的模式',encoding = '编码方式')
# 打开 第一个内容是文件的名字(必须是字符串)
# mode 第二个内容是我们对文件的操作方式
# encoding 第三个内容是我们文件的编码集
# f 文件句柄所有对文件的操作都是操作文件句柄

只读

mode = 'r'

# mode = 'r' 只读
content = f.read()  # 读 一次性全部读取
content = f.readline()  # 读取一行,但是一行后有\n换行
content = f.readlines()  # 读取多行,存放在列表里
content = f.read(3) # mode = 'r' read里的内容就是表示读取的字符数量
print(content)

mode = 'rb'

f = open(r'c:\users\super la\desktop\qwe.txt', mode = 'rb')
# r 和 \\ 一样都是转义  r'c:\users\super la\desktop\qwe.txt'      'c:\\users\\super la\\desktop\\qwe.txt'
# 如果直接拷贝文件路径的话 将c转换成c
# rb读取字节
print(f.read()) # 读取字节 不能指定编码格式

绝对路径:从磁盘开始查找的就是绝对路径

相对路径:相对与 上文件夹内容详解来查找的一种路径

文件路径推荐写法 用相对路径

只写

mode = 'w'

f = open('t1.txt', mode = 'w', encoding = 'utf8')
f.write('lalalalaalal')
f.write('啦啦啦啦啦啦')
print(f.write('123456'))  # 返回创建字符的数量
# w模式 如果文件不存在就新建一个
# 覆盖写,写之前先把文件清空

mode = 'wb'

f = open('qq.jpg',mode = 'rb')
f = open('qq1.jpg',mode = 'wb')
f.write(f.read())

a 模式 追加

f = open('t1',mode = 'a', encoding = 'utf8')
f.write('lalala')
#文件最后添加内容

'w' 只写 没有读的功能 打开word 打不开

读写

r+ 读 写

f = open('t1',mode = 'r+',encoding = 'utf8')
# 读 写
#print(f.read())  #读内容
#f.write('啦啦啦') 

# 写 读 错误示范 写的时候会把源文件覆盖一部分
#f.write('啦啦啦') 
#print(f.read())  #读内容

w+ 写 读

f = open('t1',mode = 'w+',encoding = 'utf8')
f.write('lalala')
f.seek(0)  # 移动文件光标 
print(f.read())

a+ 追加 读

f = open('t1',mode = 'a+',encoding = 'utf8')
f.seek(0)
print(f.read())
f.write('哈哈哈')

最常用的r+

f = open(r'..\t1',mode = 'r+',encoding = 'utf8')
# ..\ 返回上一级
#print(f.read())  # 读内容
#f.write('今天是个好日子')

总结:

# r 只读    不能写
# read()    读取全部  模式是r的时候  read(3)  读取3个字符
#                   模式是rb的时候  read(3)  读取3个字节
# read()         读取一行
# readlines()    存放在一个列表中

# w 只写    不能读   覆盖写,先清空文件的内容,再写
# 当文件不存在的时候,创建一个文件

# a 追加 不能读
# 写的内容一直在问价的末尾

# r+
# 错误示范    先写在读
# 正确的是    先读在写

# w+    写读
# 写读的时候是读不到内容的,除非移动光标

# a+  追加写  读
# 写读的时候是读不到内容的,除非移动光标
# 最常用:r, w, a, r+, a+
f = open('t1',mode = 'r',encoding = 'utf8')
print(f.read())
msg = f.read()
print(msg)
f.close()  # 关闭文件

f = open('t1',mode = 'w',encoding = 'utf8')
msg = f.write('啦啦啦')
f.flush()   # 刷新
print(msg)
f.close()
with open('t1', mode = 'r', encoding = 'utf8') as f : # 上下文管理    ---面试题
    msg = f.read()
    print(msg)
# 不用自动关闭

文件其他操作

with open('t1','r',encoding = 'utf8') as f:
    print(f.read())
    print(f.seeek(0)) # 字节
    # 双数字
         # (0,0)文件的头部
         # (0,2)文件的尾部
         # (0,1)当前位置
     # 单数字
         seek(0)    # 字节  
    print(f.read(1)) # 读一个字符
    print(f.tell()) # 查看光标的位置  数的字节
with open('t1','r',encoding = 'utf8') as f:
    f.truncate(9)   # 截取 3个字符 指定字节之后的内容全部删除
    

文件更改及名字修改

import os
os.rename('t2','t3') # 修改文件名
with open('t1','r',encoding = 'utf8') as f , open('t2','a',encoding = 'utf8') as f1:
    msg = f.read()   # 将文件复制一份
    msg = msg.replace('好','困')
    f1.write(msg)
    
import os
os.remove('t1')  # 删除源数据
os.rename('t2','t3')
with open('t4',mode = 'r',encoding = 'utf8') as f, open('t6', mode = 'a',encoding = 'utf8') as f2:
    for i in f:
        print(i.strip())
        f2.write(i) # 文件修改

今日总结:

    # open()  # 打开
    # close 要关闭文件
    # 写模式下需要刷新  flush()

    # r 只读
    #   read(3)   看对文件操作的模式来判断是字符还是字节
    #   mode = 'r' 时候是字符
    #   mode = 'rb' 时候是字节
    # readline()   读取一行,自带\n(换行)
    # readlines()  读取全部以一行一行的形式存在放列表里

    # a 追加
        #文件的末尾写
    # w 覆盖写
        # 先清空文件,后写入文件

    # rb ,wb ab自己试
        # 只要是带b的模式,注意的是不是不能有encoding

    # a+
    #   追加 + 读     注意 不管怎么读都读不到内容,除非移动光标

    # w+
    #   覆盖写 + 读   注意:先写后读  先读后写   除非移动光标

    # r+
    #   读 + 写      注意: 先读后写

    # 其他操作

    # seek()  移动光标
    #   0,0    开头
    #   0,1    当前
    #   0,2    末尾

    # 3 如果是文字就移动一位,如果是英文就移动3位

    # tell() 查看光标 光标是按照字节数的

    # truncate()  截取  内容是字节数

# 文件修改
import os  # 导入  os和操作系统相关

# os.rename()  # 重命名  第一个参数旧的名字,第二个是新的名字
# os.remove()    # 删除这个文件  字符串


# with open('t1','r',encoding='utf-8')as f,\
#       open('t2','w',encoding='utf-8')as f1:

# 路径:

# 绝对路劲: 从磁盘根目录开始查找
# 相对路劲: 相对于某个东西来查找就是相对路径
#   返回上一级 ..\
# c:\user\...    可以把单个\写成双\\
# 在路径的前面加一个r
# 以上两种就是转义