更新时间:2021-12-17 GMT+08:00
分享

Python API接口

数据处理是通过执行python脚本处理OBS数据。Python脚本执行平台使用的是华为公有云ModelArts服务的训练作业执行引擎。

用户可以在脚本中直接使用MoXing中提供的一套文件对象API,用来读写本地文件或OBS文件系统。

在python脚本最前面,添加如下代码后,几乎所有本地文件的操作接口都可以支持s3路径。

import moxing as mox  
mox.file.shift('os', 'mox') 
 
# Read OBS File 
with open('s3://bucket_name/hello_world.txt') as f: 
   print(f.read()) 
 
# Read Local File 
with open('/opt/hello_world.txt') as f: 
   print(f.read())

数据处理支持的s3路径文件的操作接口,如表1所示。

表1 Python API与MoXing API对应关系

Python

mox.file

接口含义

参数

返回值

glob.glob

mox.file.glob

返回给定路径的文件列表

url:本地路径或s3 url

绝对路径的列表

os.listdir

mox.file.list_directory(..., recursive=False)

列出给定路径下的所有文件

  • url:本地路径或s3 url
  • recursive:是否列出路径下所有文件,假如路径是本地路径,则recursive总是为True
  • remove_sep:当OBS地址被解析的时候,是否移除最后一个分隔符字符串
  • skip_file:列出目录时是否跳过文件
  • skip_dir:列出目录时是否跳过文件夹

路径的列表

os.makedirs

mox.file.make_dirs

递归创建目录

url:本地路径或s3 url

-

os.mkdir

mox.file.mk_dir

创建目录

url:本地路径或s3 url

父目录不存在时,返回异常“OSError”

os.path.exists

mox.file.exists

路径中是否存在相应的文件

url:本地路径或s3 url

-

os.path.getsize

mox.file.get_size

获取文件大小

  • url:本地路径或s3 url
  • recursive:是否列出路径下所有文件,假如路径是本地路径,则recursive总是为True

-

os.path.isdir

mox.file.is_directory

判断给定目录或s3 URL是否是目录

url:本地路径或s3 url

-

os.remove

mox.file.remove(..., recursive=False)

删除文件或目录

  • url:本地路径或s3 url
  • recursive:是否递归删除

-

os.rename

mox.file.rename

移动一个文件或文件夹

url:本地路径或s3 url

-

os.scandir

mox.file.scan_dir

调用操作系统的目录迭代系统,来获取给定路径中文件的名称。仅在python 3中使用。与os.scandir的用法相同。

url:本地路径或s3 url

DirEntry对象的生成器

os.stat

mox.file.stat

返回给定路径的文件统计信息。与os.stat的用法相同

src_url:源路径或s3 url

包含有关路径信息的文件统计结构

os.walk

mox.file.walk

文件和目录遍历器。

url:本地路径或s3 url

-

open

mox.file.File

File Object文件对象,和python内置文件对象一样的用法。

  • name:文件路径或S3路径
  • mode:“r”,“w”,“a”,“r+”,“w+”,“a+”,“br”,“bw”,“ba”,“br+”,“bw+”,“ba+”中的一个

-

shutil.copyfile

mox.file.copy

拷贝文件,仅能拷贝一个文件。

  • src_url:源路径或s3路径
  • dst_url:目的路径或s3路径
  • client_id:指定的obs客户请求id

-

shutil.copytree

mox.file.copy_parallel

从源地址拷贝所有文件到目的地址,和shutil.cpoytree一样的用法,此方法只能拷贝目录。

  • src_url:源路径或s3路径
  • dst_url:目的路径或s3路径
  • file_list:需要被拷贝的文件列表
  • threads:资源池中进程或线程的数量
  • is_processing:假如为True,将使用多进程,假如为False,将使用多线程
  • use_queue:是否使用队列来管理下载列表

-

shutil.rmtree

mox.file.remove(..., recursive=True)

删除文件或目录

  • url:本地路径或s3 url
  • recursive:是否递归删除

-

相关文档