You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas无法生成CSV文件?WebSocket数据保存问题求助

问题:WebSocket数据无法保存为CSV文件

尝试将Binance WebSocket返回的数据保存为CSV文件,但目标目录始终没有生成文件。已尝试以下操作:

  • 以管理员身份运行VSCode
  • 将项目文件夹从C盘移至文档目录
    均无效果,且全程无报错信息。

逐步简化代码后问题仍存在,但DataFrame可正常打印,输出示例如下:

e              E        s                k
B  kline  1659568703134  ETHUSDT                0
L  kline  1659568703134  ETHUSDT        920866977
Q  kline  1659568703134  ETHUSDT  166707.65228800
T  kline  1659568703134  ETHUSDT    1659568739999
V  kline  1659568703134  ETHUSDT     103.43430000
c  kline  1659568703134  ETHUSDT    1611.00000000

当前使用的代码:

import websocket, json, numpy, pandas
from binance.client import Client
from binance.enums import *

SOCKET = "wss://stream.binance.com:9443/ws/ethusdt@kline_1m/btcusdt@kline_1m"
    #lol
def on_open(ws):
    print('opened connection')

def on_close(ws):
    print('closed connection')

def on_message(ws, message):
    df = pandas.read_json(message)
    print(df)
    df.to_csv('my_new_file.csv')

ws = websocket.WebSocketApp(SOCKET, on_open=on_open, on_close=on_close, on_message=on_message)
ws.run_forever()
解决方案
  1. 指定完整文件路径
    代码中df.to_csv('my_new_file.csv')使用相对路径,可能导致文件生成在Python解释器的工作目录(而非项目目录)。改为绝对路径,例如:

    df.to_csv('C:/Users/YourUsername/Documents/my_new_file.csv')
    

    或者动态获取脚本所在目录,确保路径准确:

    import os
    script_dir = os.path.dirname(os.path.abspath(__file__))
    csv_path = os.path.join(script_dir, 'my_new_file.csv')
    df.to_csv(csv_path)
    
  2. 验证路径与写入权限
    先测试基础写入功能,确认目标路径的合法性和权限:

    with open('test_write.txt', 'w') as f:
        f.write('test')
    

    查看该测试文件是否生成,以此排查路径或权限问题。

  3. 处理追加写入与文件覆盖问题
    当前代码每次收到消息都会覆盖原有CSV文件,高频消息下还可能出现文件占用。改为追加模式,并仅首次写入时添加表头:

    import os
    def on_message(ws, message):
        df = pandas.read_json(message)
        print(df)
        csv_path = 'my_new_file.csv'
        mode = 'w' if not os.path.exists(csv_path) else 'a'
        header = mode == 'w'
        df.to_csv(csv_path, mode=mode, header=header, index=False)
    
  4. 捕获写入异常
    添加异常捕获,排查潜在的隐性错误:

    def on_message(ws, message):
        df = pandas.read_json(message)
        print(df)
        try:
            df.to_csv('my_new_file.csv')
            print("文件写入成功")
        except Exception as e:
            print(f"写入出错: {e}")
    

内容的提问来源于stack exchange,提问作者Philip C.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 05:24:08