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为单位。如果不指定参数,表示一次性读取全部内容,以字符串形式返回,并且每一行结尾会有一个"\n"符号。
 
    (2)、readline([size])
     调一次读取一行,如果给定了size,有可能返回的只是一行的一部分,以字符串的形式返回,并且结尾会有一个换行符"\n"。
     读完一行,文件操作标记移动到下一行的开头。返回的是字符串
 
    (3)、readlines([size])
      读取多行,给定了size,可以返回读取行数的内容。
    2、常规的写操作
    (1)、writelines(seq)
      seq:把seq(序列)的内容全部写到文件中(多行一次性写入)。也不会自动加入换行符。
      注意:序列中的内容也必须是字符串类型的数据,才能成功写入文件。
 
    (2)、write(str)
      把str写到文件中,默认是不加换行符的,所以如果想换行的话,得手动加入换行符'\n'。
 

    3、读取文件的位置定位

      (1)、tell()
        返回当前操作文件读取到的位置一个中文:3个字节Windows下‘\r\n’(换行符)占两个字节,Linux下\n mac下\r.
       (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方法

猜你喜欢

转载自www.cnblogs.com/qianshuixianyu/p/9174285.html