python文件基本操作总结

  1. 文件介绍

    1. 数据存放的容器
    2. 文件的作用:持久性存储数据内容
    3. 文件组成:
      • 文件名
      • 扩展名:一般不同的扩展名,对应不同的文件格式;不同的文件格式有着不同的存储约定,方便程序处理
      • 文件内容
  2. 文件的使用流程

    1. 打开:open(“文件”,”模式",encoding=“gbk”):gbk是默认,可修改

      模式:

      • r:
        • 以只读方式打开文件:默认模式;
        • 文件的指针将会放在文件的开头;
        • 注意:文件不存在会报错
      • w:
        • 以只写方式打开文件
        • 文件的指针将会放在文件的开头:所以写入的新内容,会完全覆盖原内容
        • 注意:文件不存在,则会自动创建一个新文件
      • a:
        • 以追加方式(只写)打开文件
        • 文件的指针将会放在文件结尾:所以写入的内容,会新增到文件末尾
        • 注意:文件不存在,则会自动创建一个新文件
      • 增加b:
        • rb
        • wb
        • ab
        • 以二进制格式进行操作文件读写(如果文件是二进制文件,则选择此项)
      • 增加+:
        • r+:写入的新内容,会部分覆盖原内容;若先读后写,则会从读到的内容后面开始部分覆盖
        • w+
        • a+
        • rb+
        • rw+
        • ra+
        • 代表都是以“读写模式“进行打开:其他特性基本和+前面的模式一致,但关于部分操作,有细微差别
    2. 读写

      • 定位

        • f.seek(偏移量,[0,1,2]):

          0:文件流开始位置,默认值;偏移量应该是非负的

          1:当前文件流所在位置;偏移量可正可负

          2:文件流末尾;偏移量通常是负的

        • f.tell():返回值是文件指针所指位置

        • f.read(字符数):字节数默认是文件内容长度;下标会自动后移
        • f.readline([limit]):读取一行数据;limit限制的最大字节数
        • f.readlines():会自动的将文件按换行符进行处理;将处理好的每一行组成一个列表返回
        • for in:可以直接遍历f本身;也可以遍历行列表
        • 判断是否可读:if f.readable():
        • 注意
          1. 一般文件特别大时,可以使用readline方法
            • 按行加载,节省内存
            • 相较于其他两个读取方法,性能较低
          2. 其他两个方法一次性读取文件所有内容
            • 虽然占内存
            • 但处理性能高
        • f.write(“内容”):返回值是写入的字节长度
        • f.writeable():判定是否可写
    3. 关闭

      1. f.close():可以释放系统资源;会立即清空缓冲区的数据内容到磁盘文件
      2. 补充
  3. 文件的相关操作

    1. 模块:import os

    2. 操作:

      • 重命名:

        • os.rename(src,dst):可修改文件、文件夹名称

          #若当前目录下没有two目录,则会抛出异常
          os.rename("one/one.txt","two/two.txt")
          
        • os.renames(old,new):

          #若当前目录下没有two目录,则会创建two目录
          os.rename("one/one.txt","two/two.txt")
          
      • 删除

        • os.remove(“文件路径”):删除文件(文件不存在会报错)
        • 删除目录
          • os.rmdir(path):不能递归删除目录;如果文件夹非空,会报错
          • os.removedirs(path):可以递归的删除目录;如果文件夹非空,会报错
      • 创建文件夹

        • or.mkdir(“文件夹名称”[,mode]):不能递归创建

        • 了解:数字模式权限

          • 文件拥有者
            • 读:4(r)
            • 写:2(w)
            • 可执行:1(x)
          • 同组用户
            • 可执行
          • 其他用户
            • 可执行
          os.mkdir("b",0o777)#三组用户均可读、写、执行
          
      • 获取当前目录:os.getcwd()

      • 改变默认目录:os.chdir(“目标目录”)

      • 获取目录内容列表:os.listdir("./"),当前目录内容列表

  4. 案例

    1. 文件复制

    2. 文件分类并生成文件清单

      • 给定一批文件
      • 按照文件后缀名,划分到不同的文件夹
        • 文件夹名:后缀名
        • 结果:
          • avi
            • a.avi
            • b.avi
          • jpg
            • a.jpg
            • b.jpg
          • txt
            • a.txt
      #0.获取所有的文件名称列表
      import os
      import shutil
      
      path = "files"
      if not os.path.exists(path):
          print(path+"路径不存在")
          exit()
      os.chdir(path)
      file_list = os.listdir("./")
      
      #1.遍历所有文件
      for file_name in file_list:
      
          #2.分解文件的后缀名
          #2.1获取最后一个.的索引位置
          index = file_name.rfind(".")
          if index == -1:
              continue
          #2.2根据这个索引位置,当作起始位置,来获取后续的所有字符串内容
          extension = file_name[index+1:]
      
          #3.查看一下,是否存在同名的目录
          #4.如果不存在这样的目录:直接创建一个这样名称的目录
          #5.目录存在,则移动过去
          if not os.path.exists(extension):
              os.mkdir(extension)
          shutil.move((file_name,extension))
      
      • 生成txt格式的文件清单
      import os
      
      
      def listFiles(dir):
          file_list = os.listdir(dir)
          for file_name in file_list:
              new_fileName = dir + "/" + file_name
              if os.path.isdir(new_fileName):
                  print(new_fileName)
                  listFiles(new_fileName)
              else:
                  print("\t" + file_name)
          print("")
      listFiles(".pytest_cache")
      
      def listFilesToText(dir,file):
          file_list = os.listdir(dir)
          for file_name in file_list:
              new_fileName = dir + "/" + file_name
              if os.path.isdir(new_fileName):
                  file.write(new_fileName)
                  listFilesToText(new_fileName,file)
              else:
                  file.write("\t" + file_name)
          file.write("\n")
      f = open("list.txt","a")
      listFilesToText(".pytest_cache",f)
      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python文件操作包括对文件的读取和写入。使用内置函数open()可以打开文件,并指定文件的路径、模式和编码。文件路径可以是绝对路径或相对路径。模式参数用于指定文件的打开模式,默认为文本读取模式。编码参数用于指定文本文件的字符编码。文件操作的基本步骤是打开文件、操作文件内容、关闭文件。 以下是一个文件读取的示例代码: ```python # 打开文件 fb = open(file=r"C:\Users\LX\PycharmProjects\pythonProject\web_study\a.txt", mode="r", encoding="utf-8") # 读取文件内容 ct = fb.read() # 打印文件内容 print(ct) # 关闭文件 fb.close() ``` 此外,还可以使用相对路径来读取文件。相对路径是相对于当前脚本文件的路径。下面是使用相对路径读取文件的示例代码: ```python with open(file=r"a.txt", mode="r", encoding="utf-8") as fb: # 读取文件内容 ct = fb.read() # 打印文件内容 print(ct) ``` 为了更好地管理文件句柄,可以使用上下文管理器with语句。在with语句块中打开文件,当with语句块结束时,会自动关闭文件,无需手动调用close()方法。下面是使用with语句读取文件的示例代码: ```python with open(file=r"a.txt", mode="r", encoding="utf-8") as fb: # 读取文件内容 ct = fb.read() # 打印文件内容 print(ct) ``` 总结起来,Python文件操作可以通过open()函数打开文件,并使用不同的模式和编码进行读取或写入操作。为了避免资源浪费,可以使用with语句进行上下文管理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python文件操作](https://blog.csdn.net/qq_41130705/article/details/124837017)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值