文件不是zip文件错误,但我没有打开zip文件

时间:2019-07-22 21:04:40

标签: python pandas dataframe

我正在构建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文件” 对于这种情况的发生方式或原因,我完全感到困惑。
从此代码的外观来看,它很简单。我不知道错误的来源在哪里。任何见识当然都值得赞赏。谢谢所有出色的编码员!

1 个答案:

答案 0 :(得分:1)

XSLX文件在内部是ZIP文件。例如,您可以使用7Zip解压缩XLSX文件。也许您要打开的文件不是XLSX文件,而是XLS文件(旧办公室文件格式)或完全不相关的文件。

您似乎一直在寻找新文件

glob.glob('btc*.xlsx')

您可能找到了一个新文件,但该文件尚未完全写入。可以通过在找到新文件后等待10秒钟来改善此问题(尽管仅等待任意时间并不能100%解决此问题)

  

没有堆栈跟踪。唯一的错误是。它说“文件不是zip文件”,由于while循环,它会无限循环地重复。

没有堆栈跟踪,因为您可以捕获异常并仅打印其消息。使用

traceback.print_exc()

打印最后一个异常,或者更好的是,不要捕获异常。