从 Jupyter Notebook 中的文件“main.py”传输代码

Posted

技术标签:

【中文标题】从 Jupyter Notebook 中的文件“main.py”传输代码【英文标题】:Transferring code from a file "main.py " in Jupyter Notebook 【发布时间】:2022-01-21 06:15:23 【问题描述】:

我正在尝试在 Jupiter notebook 中运行代码,但其中的数字不运行,请帮助我使用“matplotlib”库在 pandas DataFrame 中显示 BTC 图

import websockets
import asyncio
import json
import time
import matplotlib.pyplot as plt


fig = plt.figure()
ax = fig.add_subplot(111)
fig.show()

xdata = []
ydata = []


def update_graph():
   ax.plot(xdata, ydata, color='g')
   ax.legend([f"Last price: ydata[-1]$"])

   fig.canvas.draw()
   plt.pause(0.1)


async def main():
    url = "wss://stream.binance.com:9443/stream?streams=btcusdt@miniTicker"
    async with websockets.connect(url) as client:
        while True:
           data = json.loads(await client.recv())['data']

           event_time = time.localtime(data['E'] // 1000)
           event_time = f"event_time.tm_hour:event_time.tm_min:   
           event_time.tm_sec"

           print(event_time, data['c'])

           xdata.append(event_time)
           ydata.append(int(float(data['c'])))

           update_graph()


if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())

【问题讨论】:

有错误吗?如果是这样,请将其完整粘贴到问题中。 下午好!谢谢,在附件中注明如下 【参考方案1】:

只需删除此声明:if __name__ == '__main__':

【讨论】:

【参考方案2】:

Jupyter 运行代码的方式与普通 Python 不同。

当您使用python myfile.py 运行代码时,它会将名为__name__ 的变量设置为main。但是当 Jupyter 运行你的代码时,它不会设置变量。

因此,当你说 if __name__ == '__main__' 时,它永远不会在 Jupyter 中执行,因为 __name__ 永远不会是 main

所以,解决方案是删除if 语句,只保留它下面的行。

改变

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

【讨论】:

下午好!非常感谢,我删除了这个。在 jupiter notebook 中运行 figure fig = plt.figure() 时出现问题。 - /opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:3: UserWarning: Matplotlib 当前正在使用 module://ipykernel.pylab.backend_inline,这是一个非 GUI 后端,因此无法显示数字。这与 ipykernel 包是分开的,所以我们可以避免导入,直到【参考方案3】:

下午好! 我在启动时发布错误:

/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:3: UserWarning: Matplotlib 当前正在使用 module://ipykernel.pylab.backend_inline,这是一个非 GUI 后端,所以不能显示图。 这与 ipykernel 包是分开的,所以我们可以避免导入,直到

Click to view the error

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于从 Jupyter Notebook 中的文件“main.py”传输代码的主要内容,如果未能解决你的问题,请参考以下文章

为啥jupyter notebook代码运行一直没有反应

为啥jupyter notebook代码运行一直没有反应?

如何从 Jupyter Notebook 下载所有文件和文件夹层次结构?

运行jupyter notebook出现这种情况的原因如何解决

运行jupyter notebook出现这种情况的原因如何解决

从 jupyter-notebook 下载 HTML 文件到本地