我正在构建BCT交易机器人。我正在从交易所提取API中的数据。我将数据保存在btc_10Xave_timestamp()之类的文件中。 我还有另一个脚本正在分析此数据。不论交易量大小,每100笔交易都会产生这些文件。我经常将它们组合成一个数据主文件。我遇到的问题与此分析仪有关。
这是我的代码:
import numpy as np
import pandas as pd
import glob, time
from playsound import playsound
print('Monitoring for time to trade...')
while True:
try:
previous_time = 0.0
time_of_file = 0.0
sum_size = 0.0
last_price = 0.0
previous_price = 0.0
files_array = np.sort(glob.glob('btc*.xlsx'))
if len(glob.glob('btc*.xlsx')) > 1:
df = pd.read_excel(files_array[-1], header=None)
sum_size = df.iloc[:,2].sum()
last_price = df.iloc[-1, 1]
previous_df = pd.read_excel(files_array[-2], header=None)
previous_price = previous_df.iloc[-1, 1]
diff_price = last_price - previous_price
previous_time = files_array[-2] [11:files_array[0].index('.xlsx')-1]
last_time = files_array[-1][11:files_array[0].index('.xlsx')-1]
time_lapse = str(float(last_time) - float(previous_time))
if float(time_lapse) < 10:
#volumne is rapidly moving in at this point
if diff_price > 0:
#buying opp
playsound('golong.mp3')
print('Buying Opportunity Here @: $'+ str(last_time))
print("Last 100 trades of : " + str(sum_size) + " BTC in " + time_lapse + " seconds.")
print("This volumne moved the market " +str(diff_price) + " USD")
elif diff_price < 0:
#sell opp
playsound('sellit.mp3')
print('Selling Opportunity Here @: $' + str(last_time))
print("Last 100 trades of : " + str(sum_size) + " BTC in " + time_lapse + " seconds.")
print("This volumne moved the market " +str(diff_price) + " USD")
else:
pass
time.sleep(10)
except Exception as e:
print(e)
continue
再次抛出的错误说:“文件不是zip文件”
对于这种情况的发生方式或原因,我完全感到困惑。
从此代码的外观来看,它很简单。我不知道错误的来源在哪里。任何见识当然都值得赞赏。谢谢所有出色的编码员!
答案 0 :(得分:1)
XSLX文件在内部是ZIP文件。例如,您可以使用7Zip解压缩XLSX文件。也许您要打开的文件不是XLSX文件,而是XLS文件(旧办公室文件格式)或完全不相关的文件。
您似乎一直在寻找新文件
glob.glob('btc*.xlsx')
您可能找到了一个新文件,但该文件尚未完全写入。可以通过在找到新文件后等待10秒钟来改善此问题(尽管仅等待任意时间并不能100%解决此问题)
没有堆栈跟踪。唯一的错误是。它说“文件不是zip文件”,由于while循环,它会无限循环地重复。
没有堆栈跟踪,因为您可以捕获异常并仅打印其消息。使用
traceback.print_exc()
打印最后一个异常,或者更好的是,不要捕获异常。