python爬取的数据写入excel总是覆盖上一条?(pytho
2020-04-10 本文已影响0人
demoxjl
run.bat文件
@echo off
cd
python new.py
@echo 5秒后窗口关闭
@Rem 保存窗口5秒
@ping 127.0.0.1 -n 5 >nul
写入.csv文件的时候,判断该文件是否存在,若不存在写入头部标题
#!/usr/bin/python3
#coding: utf-8
#create time: 2020-04-9
#create by:lxj
#new.py
from xml.etree import ElementTree #解析xml
import time
import xlrd
import xml.dom.minidom #导入处理xml文件的模块
import pandas as pd
import xlwt #写入excel文件
import csv
import os
# from xlutils.copy import copy
# xml.etree.ElementTree.fromstring(text):从字符串常量解析XML,XML()方法解析的方式也一样,它们返回的都是一个Element实例
def readToWrite(response):
str_val = ElementTree.XML(response)
# print(str_val,23)
head = str_val.find('Head')
ErrorCode = head.find('ErrorCode').text
contentList = []
title = []
# contentTxt = ''
if ErrorCode == '0000':
vehicleInfo = str_val.find('Body').find('VehicleInfo')
for child in vehicleInfo:
contentList.append(child.text)
title.append(child.tag)
# contentTxt = ','.join(map(str,contentList))
write_csv('check_car1.csv', title, contentList)
def write_csv(fileName,head, data):
#参数a,打开一个文件用于追加,若文件不存在会自动新建,已存在,文件指针将放在文件的结尾,将新内容写到已有内容之后
#check_car1.txt
isExistFile = os.path.exists(fileName) #True/False
with open(fileName,'a', encoding='utf-8',newline='') as f:
writer = csv.writer(f, dialect='excel')
#检查写入的文件是否有内容,若无内容写入头部
if isExistFile:
writer.writerow(data)
else:
writer.writerow(head)
writer.writerow(data)
if __name__ == "__main__":
response ='<?xml version="1.0" encoding = "GBK"?>'\
'<Packet type="RESPONSE" version="1.0">'\
'<Head>'\
'<RequestType>C04</RequestType>'\
'<RequestCode>1</RequestCode>'\
'<ErrorCode>0000</ErrorCode>'\
'<ErrorMessage>成功</ErrorMessage>'\
'</Head>'\
'<Body>'\
'<VehicleInfo>'\
'<VIN>AWDDDwe98</VIN>'\
'<LicensePlateNo>粤AC6789</LicensePlateNo>'\
'<LicensePlateType>01</LicensePlateType>'\
'<EngineNo>XB82061103</EngineNo>'\
'<PMVehicleType>03</PMVehicleType>'\
'<PMUserNature>03</PMUserNature>'\
'<IneffectualDate>20200809</IneffectualDate>'\
'</VehicleInfo>'\
'</Body>'\
'</Packet>'
readToWrite(response)