• python的文件流,初步网页爬虫,序列化和反序列化


    一、文件流

    1.  open方法是打开文件,方法是:

      open(“文件名”,‘打开方式’,‘缓存’’)

       参数说明

       “文件名”:包含了你要访问的文件路径及文件名称的字符串值。尽量使用绝对路径

       ‘打开方式’:默认文件访问模式为只读(r)

       ‘缓存’:如果值<0,寄存区的缓冲大小则为系统默认;

          如果值=0,就不会有寄存;

          如果值=1,访问文件时会缓存行;

          如果值>1的整数,表明了这就是寄存区的缓冲大小;

          该参数是非强制性的。

    2.mode文件操作模式

     (1)打开方式

      r--读 ,w--写 ,a--追加

      r+可读可写
      w+:打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
      a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
     
      rb wb ab 读写二进制
      (2)对文件作读写操作
        1、常规的读操作
        (1)read([size])
          size:读取的长度,以byte为单位。如果不指定参数,表示一次性读取全部内容,以字符串形式返回,并且每一行结尾会有一个" "符号。
     
        (2)、readline([size])
         调一次读取一行,如果给定了size,有可能返回的只是一行的一部分,以字符串的形式返回,并且结尾会有一个换行符" "。
         读完一行,文件操作标记移动到下一行的开头。返回的是字符串
     
        (3)、readlines([size])
          读取多行,给定了size,可以返回读取行数的内容。
        2、常规的写操作
        (1)、writelines(seq)
          seq:把seq(序列)的内容全部写到文件中(多行一次性写入)。也不会自动加入换行符。
          注意:序列中的内容也必须是字符串类型的数据,才能成功写入文件。
     
        (2)、write(str)
          把str写到文件中,默认是不加换行符的,所以如果想换行的话,得手动加入换行符' '。
     

        3、读取文件的位置定位

          (1)、tell()
            返回当前操作文件读取到的位置一个中文:3个字节Windows下‘ ’(换行符)占两个字节,Linux下 mac下 .
           (2)、seek(x,n) 移动游标到想去的位置
             n:,默认是0,起始位置     2:从末尾开始计算偏移;1:从当前位置作为标准位置
             x:移动的总距离,可以是正数,可以为负数
     
    3、文件输出方法:
      (1)  with open("文件名",'打开方式') as '新名字':
              print('新名字')
      (2)   for line in '文件名':
             print(line)
    二、网上爬虫
      实例代码:
    response=request.urlopen("https://baike.baidu.com/item/AOP/1332219?fr=aladdin")
    fi=open("ccc.py",'w')
    page=fi.write(str(response.read()))
    fi.close()
      其中需要导入requ的包,用方法urlopen找到网址,然后创建文件用来储存,
    接着用文件的write方法,对获得的网页的read方法,并转为字符串。最后关闭文件。

    三、序列化和反序列化
      通过将对象序列化可以将其存储在变量或者文件中,可以保存当时对象的状态,实现其生命周期的延长。
    并且需要时可以再次将这个对象读取出来。
    用到pickle模块:
    # 序列化
        with open('abc.pkl', 'wb') as f:
          dic = {'age': 23, 'job': 'student'}
          pickle.dump(dic, f)
    # 反序列化
        with open('abc.pkl', 'rb') as f:
           aa = pickle.load(f)
           print(aa)
          

    总结:即序列化用到dump方法,反序列化用到load方法

  • 相关阅读:
    第009讲:了不起的分支和循环3
    Term_Application
    十大编程算法助程序员走上高手之路
    每天工作4小时的程序员
    编程真相_节选
    Sublime_Snippet
    VIM资源管理
    微信企业号开发资源整理
    vitruviano
    VIM_git
  • 原文地址:https://www.cnblogs.com/qianshuixianyu/p/9174285.html
Copyright © 2020-2023  润新知