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()
解决方案
指定完整文件路径
代码中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)验证路径与写入权限
先测试基础写入功能,确认目标路径的合法性和权限:with open('test_write.txt', 'w') as f: f.write('test')查看该测试文件是否生成,以此排查路径或权限问题。
处理追加写入与文件覆盖问题
当前代码每次收到消息都会覆盖原有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)捕获写入异常
添加异常捕获,排查潜在的隐性错误: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.
相关产品推荐
相关产品推荐

