python 读写文件 把爬取的图片信息写入文件

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系统的问题**

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值