文件操作AndOSAnd序列化和反序列化

 
 

Python3文件操作:

使用文件的目的: 就是把一些数据存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份, 省时省力,防止了数据的丢失。

  1.打开文件 

         在Python,使用open函数,可以打开一个已经存放的文件,或者创建一个新的文件 open(文件名,访问模式)

       访问模式有如下:

    实例如下:
       f = open("test.txt","r")

       注意的是:
          1.常用的访问模式为 :  r,w,a
          2.使用r如果打开了一个不存在的文件,会报错。
          3.同理,如果使用r+打开了一个不存在的文件,会报错。
          4.read读取是一次性全部读取,如果再次读取相同的文件的读取不到任何东西的!
    2.关闭文件:
          close()
       示例如下:
          #新建一个文件,文件名为:test.txt
          f = open("test.txt","w")

          #关闭这个文件
          f.close()
    3.文件的读写:
       3.1  读文件:
          例子:
               #打开一个文件
               #如果文件不存在,会报错,如果操作文件里面的内容有中文,
               #这样写即可: f = open("test.txt","r",encoding="UTF-8")
                f = open("test.txt","r")
                content = f.read()
                print(content)
                #注意,再次读取是读取不到任何东西的,因为read是一次性全部读取!
                #content2 = f.read()
                #print("content2:",content2)
                #关闭一个文件
                f.close()
         3.2 读取指定字符的长度:
               例子:
                    f = open("test.txt","r")
                    #read()可以写上每次要读取字符的长度
                    content =  f.read(5)
                    print(content)
                    f.close()
         3.3 使用with读取文件:
                例子:
                    with open("bbb.txt","r",encoding="utf-8") as name:
                    print(name.read())
       3.3  写文件:
          例子:
                #写文件
                #如果该文件存在就把该文件删除在创建打开,反之,先创建在打开
                f = open("abc.txt","w")
                #写文件
                f.write("hahhah 2017,I LOVE YOU")
                f.close()
       4.读数据(readlines)
          就像read没有参数时一样,readlines可以按照行的方式把整个文件中的内容进行一次性读取,
          并且返回的是一个列表,其中每一行的数据为一个元素。
          例子:
            #readlines
            f = open("test.txt","r",encoding="utf-8")
            contentLines = f.readlines()
            print(contentLines)
            f.close()
          返回结果:
            #一个列表,每一行是一个元素
            ['fsdfdsfsdf1\n', 'fdsfsdf2\n', 'fds3\n', 'fsdf4\n', 'sdf5\n', '我爱你']
       4.1 读数据(readline)
            每一次只读取一行数据
            f = open("test.txt","r",encoding="utf-8")
            #每一次只读取一行数据
            contentLines = f.readline()
            print(contentLines)
            contentLines = f.readline()
            print(contentLines)
            f.close()
          返回结果:
             fsdfdsfsdf1

             fdsfsdf2
       5.完成一个复制文件
          例子:
                #1.打开要复制的文件
                f_read = open("test.txt","r",encoding="utf-8")
                #2.创建一个新的文件,用来存储源文件的数据内容
                f_write = open("test[附件].txt","w")
                #3.复制
                content = f_read.read()
                f_write.write(content)
                #4.关闭文件
                f_write.close()
                f_read.close()

6.文件的随机读写:

    定位: 可以从指定的位置,往下执行,不用从头开始。

    6.1 获取当前读写的位置 在读写文件的过程中,如果想知道当前的位置,可以使用tell()来获取。

    例子一枚: 

      f = open("abc.txt") 

      f.read(1)

      f.read(1)

     f.read(1)

    #获取当前读取到的位置 

    position=f.tell()

    print(position) 

    f.close()

6.2 定位到某个位置

如果在读写文件的过程中,需要从另外一个位置进行操作的话,可以使用seek() 

 seek(offset,from)有2个参数

   *offset:偏移量 

   *from:方向 

       0:表示文件开头 

       1:表示当前位置 

       2:表示文件末尾

 例子:

     #练习seek

     #创建一个文件

     w = open("www.txt","w+")

    #在文件中写入值

     w.write("hahahhahahlalalla")

   #读取写入的文件 

   content = w.read()

   #输出 发现输出的是空白,原因就是你刚刚写入的文件,光标是在最后一位,而read() 

   # 是根据光标所在的位置进行读取。 

    print(content)

   #解决方法就是,使用seek(),把光标定位到开头 w.seek(0,0)

   #再次读取 

    content2 = w.read()

    #现在返回的就有数据啦 

    print(content2)

   #关闭 w.close()

7. 文件的重命名、删除

    有些时候,需要对文件进行重命名、删除等一些操作,python的os模块中都有这个功能。

    7.1 文件的重命名 

      os模块中的rename()可以完成对文件的重命名操作

       rename(需要修改的文件名,新的文件名) 

       例子一枚: 

           import os 

           os.rename("abc.txt","cba.txt")

    7.2 删除文件

       os模块中的remove()可以完成对文件的删除操作

       remove(待删除的文件名)

          栗子一枚: 

             import os

             #删除 

             os.remove("abc[复制].txt")

8.文件夹的相关操作:

    实际开发中,有时需要用程序的方式对文件夹进行一定的操作,比如创建、删除等。

    就像对文件操作需要os模块一样,如果要操作文件夹,同样需要os模块 

   8.1 创建文件夹

       例子一枚: 

         import os 

         #创建文件夹 

          os.mkdir("文件夹") 

  8.2 获取当前目录 

    栗子一枚: 

      import os

     #获取当前目录 

     print(os.getcwd())

  8.3 改变默认目录

      栗子一枚: 

     import os 

     #改变当前目录 

     print(os.chdir("../"))

 8.4 获取目录列表 

       栗子一枚: 

       import os 

      #获取当前目录列表 

      print(os.listdir("./")) 

 8.5 删除文件夹

      栗子一枚: 

      import os 

     #删除文件夹 

     os.rmdir("文件夹") 

 8.6 批量修改重命名 

      栗子一枚:

     # ./代表当前目录下的test文件夹 

     allFileName = os.listdir("./test")

     for name in allFileName:

    os.rename("./test/"+name,"./test/[张xx出品]-"+name) 

9. 简单的使用文件爬取一个页面: 

       栗子一枚: 

    from urllib import request

    response = request.urlopen("http://www.baidu.com")

    fi = open("project.txt","w")

    page = fi.write(str(response.read()))

    fi.close()

10.关于序列化和反序列化:

序列化就是把对象以二进制的形式保存到本地。

 反序列化就是把保存到本地的二进制对象,反序列化成对象,在代码中直接使用。 

   上例子: 

   import pickle 

  #序列化 

  #要序列化的对象 

   data1={"a":[1,2,3], "b":"bb", "c":None } 

  #创建一个本地文件 

   f = open("ccc.txt","wb")

  #使用pickle下的dump把对象给序列化dump(对象类型,本地路径) 

    pickle.dump(data1,f) 

   #关闭 

   f.close() 

  #反序列化 

  #把这个文件的内容给取出来 

   ff = open("ccc.txt","rb") 

   #使用了load 

   result = pickle.load(ff) 

   print(result)

 返回结果为: {'a': [1, 2, 3], 'b': 'bb', 'c': None}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值