diff -ur v12/ftp_ut.py v13/ftp_ut.py --- v12/ftp_ut.py 2020-02-18 21:47:01.000000000 +0900 +++ v13/ftp_ut.py 2020-02-18 22:47:54.000000000 +0900 @@ -281,23 +281,35 @@ rmdir( lock_d ) return '' + def mkdir_local(path): + if path and not os.path.isdir( path ): + cmd = 'mkdir -p {}'.format( path ) + cmd_ut.call( cmd ) + def get(path): - r = '' - kind = get_kind( path, cut_d=True ) + kind = get_kind( path, cut_d=False ) if kind: if kind == 'f': (dir_, name) = os.path.split( path ) - if dir_: - cmd = 'mkdir -p {}'.format( dir_ ) - cmd_ut.call( cmd ) - r += do_cd_cmd( 'get', path ) - dbg.out( r, '' ) - r = '' + mkdir_local( dir_ ) + cmd = add_prm( 'get', path ) + do_cmd( cmd ) + dbg.out( cmd ) else: lst = kind.split( '\n' )[1:] - for p in lst: - r += get( path + '/' + p ) - return r + if path: + lst = list( map( lambda p: path + '/' + p, lst ) ) + (lst_d, lst_f) = base.filter_div( lambda p: p[-1] == '/', lst ) + if lst_f: + mkdir_local( path ) + cmd = add_prm( 'mget', to_str( lst_f, delim=' ' ) ) + r = do_cmd( cmd ) + while not r.endswith( 'ftp> ' ): + r = read_to_prompt() + dbg.out( cmd ) + for p in lst_d: + get( p[:-1] ) # cut tail '/' + return '' def do_paths(f, paths): r = ''