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

Python 文件不是zip文件错误,但我没有打开zip文件,python,pandas,dataframe,Python,Pandas,Dataframe,我正在建立一个BCT交易机器人。我正在从我的exchange从API中提取数据。我正在将数据保存在btc_10Xave_timestamp()之类的文件中。 我有另一个脚本正在分析这些数据。无论交易规模大小,这些文件每100笔交易生成一次。我经常把它们合并成一个主数据文件。我遇到的问题是这个分析器 这是我的密码: import numpy as np import pandas as pd import glob, time from playsound import playsound pr

我正在建立一个BCT交易机器人。我正在从我的exchange从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
将numpy导入为np
作为pd进口熊猫
导入全局、时间
从playsound导入playsound
打印(‘交易时间监控…’)
尽管如此:
尝试:
上一次_时间=0.0
文件的时间=0.0
总和大小=0.0
最后价格=0.0
以前的价格=0.0
files\u array=np.sort(glob.glob('btc*.xlsx'))
如果len(glob.glob('btc*.xlsx'))>1:
df=pd.read\u excel(文件\u数组[-1],头=None)
sum_size=df.iloc[:,2].sum()
最后价格=df.iloc[-1,1]
以前的\u df=pd.read\u excel(文件\u数组[-2],标题=None)
以前的价格=以前的价格指数iloc[-1,1]
差异价格=上次价格-上次价格
上一次\u时间=文件\u数组[-2][11:文件\u数组[0]。索引('.xlsx')-1]
上次\u时间=文件\u数组[-1][11:文件\u数组[0]。索引('.xlsx')-1]
时间间隔=str(浮动(上次)-浮动(上次))
如果浮动(时间间隔)<10:
#此时volumne正在快速移动
如果差异价格>0:
#购买opp
播放声音('golong.mp3')
打印(‘此处购买机会@:$’+str(上次))
打印(“最后100笔交易:”+str(总和大小)+“BTC in”+时间间隔+“秒”)
印刷品(“本卷影响了市场”+str(不同价格)+“美元”)
elif差异价格<0:
#出售opp
播放声音('sellit.mp3')
打印(‘此处销售机会@:$’+str(上次))
打印(“最后100笔交易:”+str(总和大小)+“BTC in”+时间间隔+“秒”)
印刷品(“本卷影响了市场”+str(不同价格)+“美元”)
其他:
通过
时间。睡眠(10)
例外情况除外,如e:
打印(e)
持续
再次抛出的错误是:“文件不是zip文件” 我完全搞不清楚这是怎么发生的或为什么发生的。

从这段代码的外观来看,它非常简单。我不知道错误的来源在哪里。当然,任何见解都值得赞赏。谢谢你们所有优秀的程序员

XSLX文件在内部是ZIP文件。例如,您可以使用解压缩XLSX文件。可能您要打开的文件不是XLSX文件,而是XLS文件(旧的office文件格式)或完全无关的文件

看起来你在不断地寻找新的文件

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

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

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

traceback.print_exc()

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

请编辑您的问题以包含错误的完整回溯欢迎使用StackOverflow。请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确指定问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您指定的问题。除此之外,我们需要删除整个错误消息(包括回溯)和多余的代码。我重新运行代码,我必须等待错误再次出现,如果找不到解决方案,我将与大家分享。非常感谢。这是一个xlsx文件。我在等待错误再次击中这一次的回溯。多谢托马斯!是否有一种方法可以测试文件是否完全写入,因为听起来这可能是问题所在。有更好的解决办法吗?可能使用listdir()或os.walk实现?