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方法
相關文章
相關標籤/搜索