2009-07-10 2 views
3

나는 인터넷 검색을 해봤지만 한 파일 만 업로드하는 방법을 찾을 수 있었고 모든 파일을 로컬 디렉토리에서 원격 FTP 디렉토리로 업로드하려고합니다. 어떤 아이디어가 이것을 달성하는 방법?Python ftplib - 여러 파일을 업로드 하시겠습니까?

+0

https://gist.github.com/dnozay/37e8148ee748068afb91 - 재귀적인 복사본. – dnozay

답변

10

루프가 있습니까?

편집 : 파일 만 업로드 보편적 인 경우는 다음과 같이 보일 것이다 :

import os 
for root, dirs, files in os.walk('path/to/local/dir'): 
    for fname in files: 
     full_fname = os.path.join(root, fname) 
     ftp.storbinary('STOR remote/dir' + fname, open(full_fname, 'rb')) 

은 물론, 방금과 같은 파일 이름을 유지하는 경우 이름 충돌을 조심해야합니다.

+0

웹 사이트를 호스트에 업로드하는 스크립트입니다 ... 그래서 내 로컬 하드 드라이브의 일부 디렉토리에 웹 사이트가 있고 디렉토리가 아닌 컨텐츠 만 업로드하려고합니다. 업로드 한 후에 내 웹 사이트에서 액세스 할 수 있습니다. myaddress.com/somedirectory 대신 myaddress.com – Phil

+0

ftp.storebinary는 ftp.storbinary 여야합니다. (p.s. 감사합니다!) – Matt

-1

FTP 배치 파일을 만드십시오 (전송해야하는 파일 목록이 있음). 파이썬을 사용하여 ftp.exe를 "-s"옵션과 함께 실행하고 파일 목록을 전달하십시오.

이것은 kludgy이지만 분명히 FTPlib은 STOR 명령에서 여러 파일을 허용하지 않습니다.

다음은 샘플 FTP 배치 파일입니다. 위의 내용은 "abc.ftp"라는 파일에 있다면

*

OPEN inetxxx 
myuser mypasswd 
binary 
prompt off 
cd ~/my_reg/cronjobs/k_load/incoming 
mput *.csv 
bye 
  • - 다음 내 ftp 명령은 것

    FTP는 -s

abc.ftp

희망이 도움이됩니다.

+0

... 리눅스에 있습니다.) – Phil

+0

나는 myftp.ftp 파일을 MSDOS의 ".bat"파일이 아니라 '배치'파일로 암시했습니다. 이 파일에는 ftp 명령 목록이 포함되며 OS 특정 명령은 포함되지 않습니다. 예를 들어, 다음은 내 하나 - OPEN inetxxx 이 * 진 오프 프롬프트 CD ~/my_reg/cronjobs/k_load/수신 MPUT을가 MyPassWd 참고 MyUser.csv bye – blispr

+0

이 방법은 이식성이 없으며 Python에 자체 FTP 클라이언트가있는 경우 다른 FTP 클라이언트를 사용해야하는 이유는 무엇입니까? 여러 경우에는 SilentGhost와 같은 방식으로하십시오. – ghostdog74

0

Python-scriptlines required to make upload-files from JSON-Call을보고 다음 FTPlib-operation: why some uploads, but others not?

하지만 당신은 예를 들어 건설은 JSON 파일 플러스 XML 파일을 FTPLIB에 의해 업로드 볼 ​​첫 번째 URL의 대답의 질문과는 다른 시작 위치, : 스크립트 라인 024와 그 이상을보십시오.

두 번째 url에서 더 많은 파일을 업로드하는 것과 관련된 몇 가지 측면을 볼 수 있습니다.

json과 xml 이외의 다른 파일 유형에도 적용 할 수 있습니다. 분명히 FTP_Upload-function을 정의하고 구현하는 2 개의 최종 섹션 앞에 다른 '항목'이 있습니다.

관련 문제