2016-09-27 8 views
0

나는 파이썬의 FTPLIB 사용하는 경우 FTP 사이트에 작은 텍스트 파일을 업로드 할 때 다음과 같은 오류가 나타납니다 나는 성공적으로 다음 코드를 사용하고

 File "ftpuploader.py", line 13, in uploadFilePath 
    ftp.storbinary("STOR {}".format(filepath), file) 
    File "/usr/lib64/python2.7/ftplib.py", line 471, in storbinary 
    conn = self.transfercmd(cmd, rest) 
    File "/usr/lib64/python2.7/ftplib.py", line 376, in transfercmd 
    return self.ntransfercmd(cmd, rest)[0] 
    File "/usr/lib64/python2.7/ftplib.py", line 358, in ntransfercmd 
    resp = self.sendcmd(cmd) 
    File "/usr/lib64/python2.7/ftplib.py", line 249, in sendcmd 
    return self.getresp() 
    File "/usr/lib64/python2.7/ftplib.py", line 224, in getresp 
    raise error_perm, resp 
ftplib.error_perm: 553 Could not create file. 

을 다른 시스템에 연결할 때. 로그인하고 디렉토리를 변경할 수는 있지만 파일을 만들 수 없습니다. 나는 FileZilla의 또는 간단한 컬 명령을 사용하여 파일, 컬 -T를로드 할 수 있습니다 '/ 경로// 파일'ftp://192.168.18.75 --user 관리자 : 암호

ftp = FTP(address) 
ftp.login(username, password) 
ftp.cwd('/gui') 
file = open(filepath, 'rb') 
ftp.storbinary("STOR {}".format(filepath), file) 
ftp.retrlines('LIST') # list directory contents  
file.close() 
ftp.quit() 

어떤 아이디어?

+0

이 시도하고 작동하는지 알려주세요 : 이미 @ acw1668에 의해 코멘트에 제안

로서, 사용 ftp.storbinary ('STOR 파일 경로'오픈 (파일 경로, 'RB를 ')) –

+1

'filepath'에는 파일 이름 만 들어 있습니까? 그렇지 않다면''STOR {} '. format (os.path.basename (filepath))'을 시도하십시오. – acw1668

+0

"FTP에 연결할 수 없습니다"이상의 오류 메시지를 제공하면 실제로 도움이됩니다. 예를 들어 "시간 초과"또는 이와 유사한 오류 메시지가 표시됩니다. 수동 모드와 활성 모드와 관련이있을 수 있지만 적절한 오류 설명이 없으면 확실히 말할 수는 없습니다. –

답변

2

로컬 경로의 경로를 STOR 명령 (open(filepath, 'rb')과 함께 사용하는 경로)으로 전달하고 있습니다.

CURL을 사용하는 동안 원격 파일에 대한 경로를 지정하지 않습니다. 따라서 파일은 현재 FTP 작업 디렉토리로 업로드됩니다.

ftp.storbinary("STOR {}".format(os.path.basename(filepath)), file) 
+0

또 하나 덧붙여 말하자면, 파이썬에서 ftplib과 ftp 연결을 만들 때 명시 적으로 패시브 모드를 True로 설정해야한다는 것입니다. 설명서는 기본적으로 사용하도록 설정되었지만 설명서와 관계없이 명시 적으로 수동 모드로 선언해야했습니다. https://docs.python.org/2/library/ftplib.html – kernelK