for dirs,files,filenames in os.walk(file_path): for filename in filenames: filepath=dirs+"\\"+filename # if filename[:-15] == "STOCK_TICK": # hq_stock_tick(filepath,filename) if filename[:-15] == "INDEX_TICK": hq_index_tick(filepath,filename) # if filename[:-15] == "STOCK_ORDER": # hq_order(filepath,filename) # if filename[:-15] == "STOCK_ORDERQUE": # hq_queue(filepath,filename) # if filename[:-15] == "STOCK_TRAN": # hq_tran(filepath,filename) else: continue
1.不要命名那些有歧义的名称,files,是文件夹列表,filenames文件列表,
for root,dirs,files in os.walk(fileDir):这是正确的命名规则
for root, dirs, files in os.walk(csvDir): for filename in files: csvFilepath = os.path.join(root,filename) fileDate=zipFilePath.split(os.path.sep)[-1].split(".")[0] if filename[:-13] == "SNAPSHOT": tDir = zipFileDir + os.path.sep + "Modify" + os.path.sep + "STOCK_TICK_" + fileDate stock_tick(csvFilepath,tDir) elif filename[:-13] == "INDEX_SNAPSHOT": tDir = zipFileDir + os.path.sep + "Modify" + os.path.sep + "INDEX_TICK_" + fileDate index_tick(csvFilepath,tDir) elif filename[:-13] == "ORDER": tDir = zipFileDir + os.path.sep + "Modify" + os.path.sep + "STOCK_ORDER_" + fileDate stock_order(csvFilepath,tDir) elif filename[:-13] == "ORDER_QUEUE": tDir = zipFileDir + os.path.sep + "Modify" + os.path.sep + "STOCK_ORDERQUE_" + fileDate stock_orderque(csvFilepath,tDir) elif filename[:-13] == "TRADE": tDir = zipFileDir + os.path.sep + "Modify" + os.path.sep + "STOCK_TRAN_" + fileDate stock_tran(csvFilepath,tDir) else: logger.info("%s no function" % filename)
2.在工作中取值的时候不要使用索引,应该使用字典最好:
原因:这很难排查问题 也zip成字典
rowDict=dict(zip(tablehead.split(','),Data[dt['SecurityID']][-1].split(',')))
if float(dt['WarUpperPx'])< 0.000001: if len(Data[dt['SecurityID']])>1: dt['WarUpperPx'] = rowDict['HighLimit'] elif float(dt['PreClosePx'])>0.00001: dt['WarUpperPx'] ='%.3f'%(int((float(dt['PreClosePx'])*1.1)*1000+0.5)*0.001) else: return rtn if float(dt['WarLowerPx'])< 0.000001: if len(Data[dt['SecurityID']])>1: dt['WarLowerPx'] = rowDict['LowLimit'] elif float(dt['PreClosePx'])>0.00001: dt['WarLowerPx'] ='%.3f'%(int((float(dt['PreClosePx'])*0.9)*1000+0.5)*0.001) else: return rtn