python 讀寫檔案 把爬取的圖片資訊寫入檔案
阿新 • • 發佈:2019-01-23
1.開啟檔案時,file 和io.open的區別
file :如果檔案不存在直接報錯
open :如果檔案不存在先建立檔案再進行寫入
2.把字串寫入csv檔案
ab+ 追加內容到csv檔案 ab 追加內容到csv檔案但是第一行會空出來 wb 普通的讀寫csv檔案 但是再次執行會覆蓋以前的內容
import csv
print '把字串寫入csv檔案'
list =['1','2','3' ]
csvfile=file('F:\\images\\test.csv','ab+')
writer =csv.writer(csvfile)
writer.writerow(['Column12' , 'Column2', 'Column3'])
lines = [range(3) for i in range(5)]
print lines #[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]
for line in lines:
writer.writerow(line) #寫入的list list裡面是的元素是字串 一行一行的寫入
#writer.writerow(list) #一次性直接全部寫入
檔案中會出現5行資料為0,1,2 和頭行為Column12, Column2, Column3的檔案
3.把日期當作檔名,把list 寫入檔案
time.strftime(‘%Y-%m-%d’,time.localtime(time.time())):like 2018-02-17
import time
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
print '獲取當前時間'
print time.time()
print time.localtime(time.time())
print time.strftime('%Y-%m-%d',time.localtime(time.time()))
length=len(soup.find_all('img' ))
d=soup.find_all('img')
list=[]
print '寫入檔案'
csvfile=io.open('F:\\images\\'+time.strftime('%Y-%m-%d',time.localtime(time.time()))+'.csv','ab+')
writer =csv.writer(csvfile)
for x in range(length):
# print d[x].attrs['alt']
if(d[x].attrs.has_key('alt')):
string=d[x].attrs['src']+'|'+ d[x].attrs['alt']
print string
list.append(d[x].attrs['src']+'|'+ d[x].attrs['alt']) #list 存入字串含中文時,實際是存的unicode 編碼 \uxxxx
print list
writer.writerow(list)
list.pop()
csvfile.close()
print '讀取檔案'
for line in open('F:\\images\\'+time.strftime('%Y-%m-%d',time.localtime(time.time()))+'.csv'):
print line
4.字串寫入檔案時出現UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position
將字串寫入文字時出現解決UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position
解決辦法:
在開頭加上
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
**然後寫入檔案成功但是檔案中時 ,中文又是亂碼 直接開啟csv檔案亂碼 使用notepad++開啟時 是正常顯示的
,python在讀取檔案的時控制檯是正常顯示的 ,在java程式中讀取也是顯示正常的 查資料顯示是windows系統的問題**