背景:
使用python下载哨兵1数据,对于下载失败的文件,会在最后生成一组日志,我需要根据这个日志信息来对比源文件,把失败的数据,重新生成需要下载的数据csv。
解决方案:
当在下载报错的时候,就把这个文件名添加在指定的一个csv文件里面,这样程序跑完或者没跑完,我就知道失败的都有那些了。
脚本如下:
import csv
dataSet = []
def getFailedList(fileName):
# 传入的字符串追加到csv中
if [fileName] not in dataSet:
print('不存在当前元素,可以添加')
with open('failList.csv', 'a', encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow([fileName])
else:
print('已有元素,不添加')
def getfails(csv_name):
with open(csv_name, 'r', encoding="utf-8") as f:
csv_reader = csv.reader(f)
rows = [row for row in csv_reader]
return rows
try:
dataSet = getfails('failList.csv')
getFailedList('2')
except IOError:
getFailedList('22')
解释说明:
1.引入csv库来处理csv文件,先执行getfails函数,读取保存失败文件的csv,如果不存在,会走except,直接执行生成文件并且添加的函数 getFailedList,这样可以保证这个保存失败数据的csv是存在的。
2. 定义dataSet来记录当前失败的数据list, 然后在每次插入数据之前比对一下,如果不存在就插入,如果存在就跳过。