ModelArts and Moxing

Posted by Denghui Liu on March 25, 2019

总结学习到的有关modelArts和moxing的知识点。

一. moxing

1.1. moxing的文件操作系统

MoXing支持本地和S3路径的读取,为了同时使用,可以import如下语句

import moxing as mox

mox.file.shift('os', 'mox')

mox的文件系统和os文件系统的对应关系如下:

os.listdir        mox.file.list_directory()

os.makedirs       mox.file.make_dirs

os.mkdir          mox.file.mk_dir

os.path.exists    mox.file.exists

os.path.getsize   mox.file.get_size

os.path.isdir     mox.file.is_directory

os.remove         mox.file.remove()

os.rename         mox.file.rename

os.scandir        mox.file.scan_dir

os.stat           mox.file.stat

os.walk           mox.file.walk

open              mox.file.File

shutil.copyfile   mox.file.copy

shutil.copytree   mox.file.copy_parallel

shutil.rmtree     mox.file.remove

1.2. moxing的文件操作系统调用案例

读取OBS文件: mox.file.read(‘s3://bucket_name/obs_file.txt’)

写入OBS文件: mox.file.write(‘s3://bucket_name/obs_file.txt’, ‘Hello World!’)

追加到一个OBS文件: mox.file.append(‘s3://bucket_name/obs_file.txt’, ‘\nend of file.’)

获取一个OBS文件(夹)的元信息: stat = mox.file.stat(‘s3://bucket_name/obs_file.txt’) print(stat.length) print(stat.mtime_nsec) print(stat.is_directory)

移动一个OBS文件(夹),s3 -> 本地: mox.file.rename(‘s3://bucket_name/obs_file.txt’, ‘/tmp/obs_file.txt’) 拷贝一个OBS文件夹,s3 -> s3: mox.file.copy_parallel(‘s3://bucket_name/sub_dir_0’, ‘s3://bucket_name/sub_dir_1’)

当读取OBS文件时,实际调用的是HTTP连接读去网络流,注意要记得在读取完毕后将文件关闭。为了防止忘记文件关闭操作,推荐使用with语句,在with语句退出时会自动调用mox.file.File对象的close()方法: with mox.file.File(‘s3://bucket_name/obs_file.txt’, ‘r’) as f: data = f.readlines()