
# 如何在ModelArts的Notebook中上传下载OBS文件？
在Notebook中可以通过调用ModelArts的Moxing接口或者SDK接口与OBS交互，将Notebook中的文件上传至OBS，或者下载OBS中的文件至Notebook中。
图1Notebook中上传下载OBS文件   
![](https://support.huaweicloud.com/modelarts_faq/figure/zh-cn_image_0000002089884510.png)
使用OBS客户端上传文件的操作指导：[上传文件](https://support.huaweicloud.com/qs-obs/obs_qs_0002.html)
#### 方法一：在Notebook中通过Moxing上传下载OBS文件
MoXing是ModelArts自研的分布式训练加速框架，构建于开源的深度学习引擎TensorFlow、PyTorch等之上，使用MoXing API可让模型代码的编写更加简单、高效。
MoXing提供了一套文件对象API，可以用来读写OBS文件。
您可以通过MoXing API文档了解其与原生API对应关系，以及详细的接口调用示例，详细说明请参见[MoXing文件操作](https://github.com/huaweicloud/ModelArts-Lab/blob/master/docs/moxing_api_doc/MoXing_API_File.md)。
示例代码：
```
import moxing as mox
#下载一个OBS文件夹sub_dir_0，从OBS下载至Notebook
mox.file.copy_parallel('obs://bucket_name/sub_dir_0', '/home/ma-user/work/sub_dir_0')
#下载一个OBS文件obs_file.txt，从OBS下载至Notebook
mox.file.copy('obs://bucket_name/obs_file.txt', '/home/ma-user/work/obs_file.txt')
#上传一个OBS文件夹sub_dir_0，从Notebook上传至OBS
mox.file.copy_parallel('/home/ma-user/work/sub_dir_0', 'obs://bucket_name/sub_dir_0')
#上传一个OBS文件obs_file.txt，从Notebook上传至OBS
mox.file.copy('/home/ma-user/work/obs_file.txt', 'obs://bucket_name/obs_file.txt')
```
#### 方法二：在Notebook中通过SDK上传下载OBS文件
使用ModelArts SDK接口将OBS中的文件下载到Notebook后进行操作。
示例代码：将OBS中的文件file1.txt下载到Notebook的/home/ma-user/work/路径下。其中，桶名称、文件夹和文件的名称均可以按照业务需求自定义。
```
from modelarts.session import Session
session = Session()
session.obs.download_file(src_obs_file="obs://bucket-name/dir1/file1.txt", dst_local_dir="/home/ma-user/work/")
```
使用ModelArts SDK接口将OBS中的文件夹下载到Notebook后进行操作。
示例代码：将OBS中的文件夹dir1下载到Notebook的/home/ma-user/work/路径下。其中，桶名称和文件夹的名称均可以按照业务需求自定义。
```
from modelarts.session import Session
session = Session()
session.obs.download_dir(src_obs_dir="obs://bucket-name/dir1/", dst_local_dir="/home/ma-user/work/")
```
使用ModelArts SDK接口将Notebook中的文件上传到OBS后进行操作。
示例代码：将Notebook中的file1.txt文件上传到OBS桶路径obs://bucket-name/dir1/中。其中，桶名称、文件夹和文件的名称均可以按照业务需求自定义。
```
from modelarts.session import Session
session = Session()
session.obs.upload_file(src_local_file='/home/ma-user/work/file1.txt', dst_obs_dir='obs://bucket-name/dir1/')
```
使用ModelArts SDK接口将Notebook中的文件夹上传到OBS。
示例代码：将Notebook中的文件夹"/work/"上传至"bucket-name"桶的"dir1"文件夹下，路径为"obs://bucket-name/dir1/work/"。其中，桶名称和文件夹的名称均可以按照业务需求自定义。
```
from modelarts.session import Session
session = Session()
session.obs.upload_dir(src_local_dir='/home/ma-user/work/', dst_obs_dir='obs://bucket-name/dir1/')
```
#### 异常处理
通过OBS下载文件到Notebook中时，提示Permission denied。请依次排查：
- 请确保读取的OBS桶和Notebook处于同一站点区域，例如：都在华北-北京四站点。不支持跨站点访问OBS桶。具体请参见[查看OBS桶与ModelArts是否在同一个区域](https://support.huaweicloud.com/trouble-modelarts/modelarts_13_0157.html#section2)。
- 请确认操作Notebook的账号有权限读取OBS桶中的数据。如没有权限，请参见[在ModelArts的Notebook中，如何访问其他账号的OBS桶？](https://support.huaweicloud.com/modelarts_faq/modelarts_05_0252.html)。
 
