고급 Python FTP- FTPlib이 서버와 대화하는 방법을 제어 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/210067

  •  03-07-2019
  •  | 
  •  

문제

FTP 서버로 매우 구체적인 (비표준) 문자열을 보내야합니다.

dir "SYS:\IC.ICAMA."

인용문의 스타일과 그 내용과 마찬가지로 사례는 중요합니다.

불행히도, ftplib.dir ()는 'dir'대신 '목록'명령을 사용하는 것으로 보입니다 (이 응용 프로그램에는 잘못된 사례를 사용합니다).

FTP 서버는 실제로 전화 스위치이며 매우 비표준 구현입니다.

ftplib.sendcmd ()를 사용해 보았지만 명령 순서의 일부로 'PASV'도 보냅니다.

FTP 서버에 특정 명령을 쉽게 발행하는 방법이 있습니까?

도움이 되었습니까?

해결책

다음을 시도하십시오. 원본의 수정입니다 FTP.dir "목록"대신 "dir"를 사용하는 명령. 테스트 한 FTP 서버에서 "DIR 이해가없는"오류를 제공하지만 이후에 명령을 보내는 명령을 보냅니다. (내가 확인하는 데 사용한 인쇄 명령을 제거하고 싶을 것입니다.)

import ftplib

class FTP(ftplib.FTP):

    def shim_dir(self, *args):
        '''List a directory in long form.
        By default list current directory to stdout.
        Optional last argument is callback function; all
        non-empty arguments before it are concatenated to the
        LIST command.  (This *should* only be used for a pathname.)'''
        cmd = 'dir'
        func = None
        if args[-1:] and type(args[-1]) != type(''):
            args, func = args[:-1], args[-1]
        for arg in args:
            if arg:
                cmd = cmd + (' ' + arg)
        print cmd
        self.retrlines(cmd, func)

if __name__ == '__main__':
    f = FTP('ftp.ncbi.nih.gov')
    f.login()
    f.shim_dir('"blast"')
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top