文档首页> AI开发平台ModelArts> 故障排除> 训练作业> 云上迁移适配故障> 使用moxing适配OBS路径,pandas读取文件报错
更新时间:2022-12-08 GMT+08:00

使用moxing适配OBS路径,pandas读取文件报错

问题现象

使用moxing适配OBS路径,然后用较高版本的pandas读取OBS文件报出如下错误:
1.‘can't decode byte xxx in position xxx’
2.‘OSError:File isn't open for writing’

原因分析

出现该问题的可能原因如下:

moxing对高版本的pandas兼容性不够。

处理方法

  1. 在适配OBS路径后,读取文件模式从‘r’改成‘rb’,然后将mox.file.File的'_write_check_passed'属性值改为‘True’,参考如下代码。
    import pandas as pd
    import moxing as mox
    
    mox.file.shift('os', 'mox')  # 将os的open操作替换未mox.file.File适配OBS路径的操作
    
    param = {'encoding': 'utf-8'}
    path = 'xxx.csv'
    with open(path, 'rb') as f:
        f._wirte_check_passed = True
        df = pd.read_csv(ff, **param)
  2. 必现的问题,使用本地Pycharm远程连接Notebook调试。

建议与总结

在创建训练作业前,推荐您先使用ModelArts开发环境调试训练代码,避免代码迁移过程中的错误。