您的位置:首页 > 编程语言 > Python开发

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

2018-02-03 18:13 447 查看

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(
4000
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系统的问题**
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐