util目录下只标记src为根目录即可, 否则pdb在调用cmd包的时候会调用util.cmd而不是python3.5下的cmd
tensorflow1.9对应的keras为2.1.6, 使用tf.keras.version查看对应版本即可
路径地址相关
如果路径首部使用~:
def get_absolute_path(p):
if p.startswith('~'):
p = os.path.expanduser(p)
return os.path.abspath(p)
分割路径地址:
os.path.split(path)
返回('/home/renduo/models/imagenet/pixellink', 'ckpt_ZJU_2s')
若想获得父级目录:
os.path.split(path)[0]
'/home/renduo/models/imagenet/pixellink'
若想判断是否是路径:
os.path.isdir(path)
返回bool
遍历当前目录文件
next(os.walk(dir_name))[2]
一般用于查找ckpt, [0]是当前目录名, [1]是当前目录下存在的子目录, [2]是当前目录下存在的文件
checkpoints = filter(lambda f: f.startswith("mask_rcnn"), checkpoints)
checkpoints = sorted(checkpoints)
使用filter()和lambda函数对文件名进行筛选(也可筛选文件夹名), 注意此时的列表仍是无序的, 所以还需sorted()排序.
字符串处理相关
使用python的codecs库将GT文件转成utf-8:
def decode_utf8(raw):
"""
raw: '217,17,337,25,330,51,212,47,Underpass' ->
codecs.decode: u'217,17,337,25,330,51,212,47,Underpass' ->
raw.encode: '217,17,337,25,330,51,212,47,Underpass' ->
raw.decode: u'217,17,337,25,330,51,212,47,Underpass'
Returns a Unicode object on success, or None on failure
"""
try:
raw = codecs.decode(raw,'utf-8', 'replace')
#extracts BOM if exists, BOM_UTF8 = '\xef\xbb\xbf'
raw = raw.encode('utf8')
if raw.startswith(codecs.BOM_UTF8):
raw = raw.replace(codecs.BOM_UTF8, '', 1)
return raw.decode('utf-8')
except:
return None
'字符串'.format()进行输入:
name='block_layer{}'.format(i + 1)
{}为需要输入的位置
列出当前路径下某一后缀名文件
os.path.splitext()
专门用来分割后缀名, os.path.split()
分割的才是路径
f_list = os.listdir(path)
for file in f_list:
if os.path.splitext(file)[1] == '.txt':
print(file)
网友评论