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

1、文件流缓存

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

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

   参数说明指针

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

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

   ‘缓存’:若是值<0,寄存区的缓冲大小则为系统默认;字符串

      若是值=0,就不会有寄存;string

      若是值=1,访问文件时会缓存行;it

      若是值>1的整数,代表了这就是寄存区的缓冲大小;class

      该参数是非强制性的。

2.mode文件操做模式

 (1)打开方式

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

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

    三、读取文件的位置定位

      (1)、tell()
        返回当前操做文件读取到的位置一个中文:3个字节Windows下‘\r\n’(换行符)占两个字节,Linux下\n mac下\r.
       (2)、seek(x,n) 移动游标到想去的位置
         n:,默认是0,起始位置     2:从末尾开始计算偏移;1:从当前位置做为标准位置
         x:移动的总距离,能够是正数,能够为负数
 
三、文件输出方法:
   (1)   with open("文件名",'打开方式') as '新名字':
          print('新名字')
  (2)   for line in '文件名':
         print(line)
2、网上爬虫
  实例代码:
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方法,并转为字符串。最后关闭文件。

3、序列化和反序列化
  经过将对象序列化能够将其存储在变量或者文件中,能够保存当时对象的状态,实现其生命周期的延长。
而且须要时能够再次将这个对象读取出来。
用到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方法
相关文章
相关标签/搜索