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