You need to enable JavaScript to run this app. 咨询:AirSim配套数据采集Python脚本运行后预期存储位置未生成CSV文件
优惠活动
大模型
产品
解决方案
定价
更多

咨询:AirSim配套数据采集Python脚本运行后预期存储位置未生成CSV文件

无目标CSV文件生成的核心问题
  • 硬编码路径字符串,未使用拼接的真实路径变量:代码中所有open()调用传入的是字面量字符串r"gps_file_name",而非提前拼接好的时间戳文件名变量,更未关联你创建的C:\AirSimData存储目录。该逻辑下文件会被创建在Python进程的当前工作目录,而非你预设的存储位置,自然在目标路径找不到。
  • 循环内文件打开模式错误:while循环中始终用'w'(覆盖写入)模式打开文件,即便路径修正正确,每帧采集时都会清空全文件内容,仅保留最新一行数据,无法实现持续采集写入的目标。
  • 生成的文件名不符合Windows系统规则:直接将datetime.now()的默认字符串转换结果作为文件名,其中包含Windows文件名禁止的冒号字符,即便路径写对,调用open()时也会触发文件名非法异常,无法创建文件本体。
修正后的可运行代码
import setup_path
import airsim
import os
import csv
import datetime
from pathlib import Path

client = airsim.MultirotorClient()
client.confirmConnection()

# 确保预设存储目录存在
dirmain = Path(r"C:\AirSimData")
dirmain.mkdir(exist_ok=True)

# 生成符合Windows规则的合法文件名
run_timestamp = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
# 拼接GPS文件的完整存储路径
gps_full_path = dirmain / f"gps_{run_timestamp}.csv"

# 首次写入文件表头
with open(gps_full_path, 'w', newline='', encoding='utf-8') as f:
    csv.writer(f).writerow(['lat', 'lon', 'alt'])

# 持续采集数据循环
while True:
    gps_geo = client.getGpsData().gnss.geo_point
    gps_row = [gps_geo.latitude, gps_geo.longitude, gps_geo.altitude]
    # 追加模式写入,不会覆盖已有采集数据
    with open(gps_full_path, 'a', newline='', encoding='utf-8') as f:
        csv.writer(f).writerow(gps_row)
关键修正说明
  • 替换所有硬编码的r"gps_file_name"字面量,使用Path类自动完成路径拼接,保证生成的文件准确落在C:\AirSimData目录下
  • 将循环内的文件写入模式从'w'改为'a'(追加写入),避免每轮循环清空已存数据
  • 对时间戳格式做适配处理,替换掉Windows文件名禁止的冒号字符,避免文件创建失败
  • 增加newline=''参数,消除CSV文件生成时的多余空行问题

内容的提问来源于stack exchange,提问作者Shubham Nipanikar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 07:36:03