背景:
使用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, 然後在每次插入數據之前比對一下,如果不存在就插入,如果存在就跳過。