信息发布→ 登录 注册 退出

Python文件操作和数据格式详解(简单简洁)

发布时间:2026-01-11

点击量:
目录
  • 一、文件操作
    • 1、文件的基本操作
    • 2、读文件
    • 3、写文件
    • 4.os模块的使用
  • 二、JSON
    • 总结

      一、文件操作

      前言:

      什么是计算机的流?

      "流"指的是在不同的输入/输出等设备(键盘、内存、显示器、音响等)之间进行传递数据。

      例如:在Python中使用input()函数,就会产生数据经过键盘流输入到存储器。

      print() 就会有数据从存储器中流出到屏幕。所以流实际上就是一个字节序列。

      就如同管道中的水 “流来流去”;

      1、文件的基本操作

      Python中可以通过内置函数open()打开文件 函数定义格式如下:
      open(file,mode,buffering)

      参数说明:

      • file : 表示文件的路径
      • mode : 文件打开的模式
      • buffering : 设置访问文件的缓冲方式,若设置
      • 0 : 表示非缓冲方式
      • 1 : 每次缓冲衣阿华那个世俗据
      • 大于1 : 表示使用给定值作为缓冲区的大小

      文件打开模式

      打开模式含义说明
      r/rb只读模式以只读的方式打开文本文件/二进制文件,如果文件不存在或找不到,open()调用失败
      w/wb只写模式以只写的方式打开文本文件/二进制文件,若文件不存在,则创建文件;文件已存在 ,清空文件。
      a/ab追加模式以只写的方式打开文本文件/二进制文件,只允许在文件末尾追加数据,若文件不存在创建文件
      r+/rb+读取模式以读/写的方式打开文本文件/二进制文件,如果文件不存在,open()调用失败
      w+/wb+写入模式以读/写的方式打开文本文件/二进制文件**,如果文件存在,则清空文件**
      a+/ab+追加模式以读/写的方式打开文本文件/二进制文件,只允许在文件末尾添加数据,若文件不存在,则创建文件。

      到了写代码环节,兄弟们操练起来。耍 ! 耍 ! 整起 !

      '''
       演示 : Python中内置函数open() 打开文件
       文件的操作属于IO操作 记得释放资源
      '''
      file1 = open('a.txt') #只读模式打开文件a.txt 若文件不存在,则报异常FileNotFoundError
      file2 = open('b.txt','w') #只写模式打开文件b.txt 文件不存在则创建 文件存在则覆盖
      file3 = open('c.txt','w+') #读写方式打开 文件不存在则创建 文件存在则覆盖
      
      #释放资源
      file3.close()
      file2.close()
      file1.close()
      

      每次使用文件都得调用open()和close(),很是麻烦,若打开和关闭的操作次数较多,容易忘记close()次操作,就会造成资源的浪费。为此Python引入了 with语句实现close()方法的自动调用。

      定义格式如下:

      with open('a.txt') as file:
      	代码段
      

      2、读文件

      常用的方法

      方法描述
      read()从指定文件中读取指定字节的数据
      readline()从指定文件中读取一行数据
      readlines()从指定文件中的数据一次读出,并将每一行视为一个元素,存储到列表中。

      到了写代码环节,兄弟们操练起来。耍 ! 耍 ! 整起 !

      file = open('a.txt','r')
      
      #读文件
      #str_ = file.read(5) # 读取五个字符
      #print(str_)
      
      #readline
      # str2 = file.readline()
      # print(str2) # 第1次读取 读取第一行
      # str3 = file.readline()
      # print(str3) # 第二次读取 读取第二行
      
      #readliness
      str4 = file.readlines()
      print(str4) # 返回的是一个列表
      
      file.close()
      

      3、写文件

      常用的方法

      方法描述
      write()方法中的参数str表示要写入文件的字符串
      #1.打开文件
      file = open('b.txt','w+') #以读写方式打开文件
      
      #2.写入数据
      file.write("Hello \nWorld")
      
      #3.释放资源
      file.close()
      
      """
      问题:
          有的开发环境可能搭配在缓冲设备当中 所以调用write()方法可能出现数据未写入
      解决:
          这里介绍三种方式:
                  1.修改open函数中的buffering参数
                  2.刷新缓冲区
                  3.释放资源
      """
      #1.修改open函数中的buffering参数
      # file2 = open('demo.txt','w+',1)  # 设置为1 表示每次缓冲一行数据
      # file2.write("Hello \nWorld")
      
      #2.刷新缓冲区
      # file3 = open('demo.txt','w+',encoding="utf-8")
      # file3.write("你好 \n世界") #写入中文会乱码 这个时候指定编码
      # file3.flush() #默认情况下,缓冲区堆积满了才会自动刷新,手动调用缓冲区将会被立即清空,将数据写入到文件
      
      #3.关闭文件
      with open('demo.txt','w+',encoding="utf-8") as file4: #with open的方式将自动关闭文件
          file4.write("嗨嗨")
      
      文件读写位置操作
      """
      文件读写位置:
          Python中提供了获取文件读写位置以及修改读写位置的方法,以实现位置随机读写
          介绍一系列的方法:
              tell() 获取文件当前的读写位置
              seek(offset,from) 控制文件的读写位置
                  参数解释:
                      offset : 偏移量 即读写位置需要移动的字节数
                      from : 指定读写位置   该参数的赋值分别为 0 1 2
                          0 : 从文件开头
                          1 : 表示使用当前读写位置
                          2 : 文件末尾
      """
      #演示上述
      # with open('demo.txt','r+',encoding='utf-8') as file:
      #     location = file.tell()
      #     print(location)
      #     str1 = file.read(5)
      #     print(str1)
      
      file2 = open('a.txt',encoding='utf-8')
      file2.seek(5,0) #文件开头进行偏移
      
      #若打开的是文本文件 seek方法只允许相对于文件开头移动位置 form参数为1 2时将报错
      # file2.seek(4,1) #io.UnsupportedOperation: can't do nonzero cur-relative seeks
      
      #若要进行读写位置或文件末尾进行位移操作 要以二进制的形式打开文件
      file3 = open("a.txt",'rb')
      num3 = file3.seek(3,2) #16
      print(num3)
      file3.close()
      

      4.os模块的使用

      除了Python内置函数外,os模块中定义了文件操作相关的函数,包括了删除、创建、重命名等文件。使用之前先导入

      import os

      os模块
      import os #1.文件重命名 remove(oldName,newName) # os.rename('a.txt',
              'new.txt') #2.创建/删除文件夹 # os.mkdir('create_dir')# 默认路径下创建目录 注意:
          目录不能重名!! 否则将创建失败!!!# os.rmdir('create_dir') #3.删除文件 # os.remove(
              'b.txt') #4.获取当前目录 str = os.getcwd() print(str) #5.获取目录列表 list = os
          .listdir("./")#. / 表示当前目录下 print(list)

      5.文件的迭代

      """
      什么是迭代?
          迭代就是一个过程的多次重复,Python中实现了__iter__()方法意味着对象都是可迭代对象(字典 序列、文件等等)
      """
      file_name = input("请输入文件名")
      file = open(file_name,encoding="utf-8")
      for f in file:
          print(f,end=" ")
      file.close()
      

      运行效果

      二、JSON

      什么是JSON
      JSON简介:JSON的全称为JavaScript Object Nation(JavaScript 对象表示语法),
      基于 ECMAScript,存放的是的类似于键值对,本质上来说是javascript的数据类型,是一种轻量级的数据交互格式
      Python中提供对Json的支持
      dumps() 将Python对象 --> JSON字符串
      loads() JSON --> 对象

      Python对象JSON对象
      dictobject
      list, tuplearray
      str, unicodestring
      int, long, floatnumber
      Truetrue
      Falsefalse
      Nonenull
      """
      什么是JSON
          JSON简介:JSON的全称为JavaScript Object Nation(JavaScript 对象表示语法),
          基于 ECMAScript,存放的是的类似于键值对,本质上来说是javascript的数据类型,是一种轻量级的数据交互格式
          Python中提供对Json的支持
              dumps() 将Python对象 --> JSON字符串
              loads() JSON --> 对象
      
      """
      #导入json模块
      import json
      #json格式数据
      strList="[1,2,3,4]" #json数组
      strDict='{"price":38.6,"author":"佚名"}'
      print(type(strList)) #<class 'str'>
      #json数组-->python列表
      p_list=json.loads(strList)
      print(p_list) #<class 'str'>
      print(type(p_list),len(p_list)) #<class 'list'> 4
      
      #json对象-->python字典
      p_dict = json.loads(strDict)
      print(p_dict,type(p_dict)) #<class 'dict'>
      print('-'*60)
      #json格式数据
      listStr=[1,2,3,4] #python列表
      tupleStr=(1,2,3,4)#元组
      dictStr={"price":38.6,"author":"佚名"}
      
      #python列表-->json字符串(数组)
      list1 = json.dumps(listStr)
      print(list1,type(list1)) #<class 'str'>
      
      #python元组-->json数组
      tuple1 = json.dumps(tupleStr)
      print(tuple1,type(tuple1)) #<class 'str'>
      
      #python字典-->json对象
      dict1 = json.dumps(dictStr)
      print(dict1) #{"price": 38.6, "author": "\u4f5a\u540d"} 默认使用acsii码
      print(type(dict1)) #<class 'str'>
      
      dict2 = json.dumps(dictStr,ensure_ascii=False)
      print(dict2)
      

      总结

      在线客服
      服务热线

      服务热线

      4008888355

      微信咨询
      二维码
      返回顶部
      ×二维码

      截屏,微信识别二维码

      打开微信

      微信号已复制,请打开微信添加咨询详情!