python的文件流,初步网页爬虫,序列化和反序列化
生活随笔
收集整理的這篇文章主要介紹了
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方法
轉載于:https://www.cnblogs.com/qianshuixianyu/p/9174285.html
總結
以上是生活随笔為你收集整理的python的文件流,初步网页爬虫,序列化和反序列化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle锁定用户名及解锁
- 下一篇: 基于nuxt和iview搭建OM后台管理