python ftp 파일 다운로드

텍스트 파일을 다운로드하려면 RETR FTP 명령을 활용합니다. 빈 딕트, file_mapper 만들면 이 dict를 현재 있는 디렉토리의 각 파일의 내용으로 채웁니다(예제에서 `SymbolDirectory`). 사전의 키는 폴더의 파일 이름이며 값은 각 파일 내의 실제 데이터를 얻는 데 사용할 수 있는 BytesIO 개체입니다. 일을 더 쉽고 추상적으로 만들기 위해 FTP로 쉽게 작업 할 수있는 다양한 기능을 제공하는 Python의 ftplib 라이브러리를 사용할 것입니다. 우리는 업로드 하고 서버에서 파일을 다운로드하기위한 구현뿐만 아니라 “ftplib”우리가 할 수있는 다른 멋진 것들을 볼 수 있습니다. 이 것을 세분화하면 함수의 첫 번째 부분에서는 ftp.dir을 사용하여 입력 디렉토리의 내용 목록을 가져옵니다. 위에서 언급했듯이 변수에 저장될 수 있는 목록이나 다른 데이터 구조에 직접 출력하지는 않습니다. 대신 디렉터리의 내용을 콘솔에 인쇄합니다. 그러나 sys 패키지를 사용하면 이 출력을 변수로 캡처하여 간접적인 방식으로 streamed_result 수 있습니다. 그런 다음 이를 구문 분석하여 각 파일이 하위 디렉터리인지 아닌지 알려주는 데 필요한 정보를 얻습니다. 이 것을 조금 세분화해 봅시다.

먼저 FTP 서버에 로그인해야 하므로 자격 증명과 함께 URL을 전달하거나 익명 FTP 서버 중 하나인 경우 건너뛸 수 있습니다. retrlines (“LIST”) 명령은 우리에게 디렉토리 목록을 제공합니다. cwd 명령은 “작업 디렉토리 변경”을 의미하므로 현재 디렉토리에 원하는 내용이 없는 경우 cwd를 사용하여 변경해야 합니다. 다음 섹션에서는 파일 이름을 다소 어리석은 방식으로 잡는 방법을 보여 주었습니다. 또한 os.path.basename을 사용하여 대부분의 경우 동일한 것을 얻을 수 있습니다. 마지막 섹션에서는 실제로 파일을 다운로드하는 방법을 보여 주며, 이 섹션에서는 파일을 실제로 다운로드하는 방법을 보여 주실 수 있습니다. 파일을 올바르게 다운로드할 수 있도록 “wb”(이진 쓰기) 플래그가 있는 파일 처리기를 열어야 합니다. “8 * 1024″비트는 다운로드 할 블록 크기이지만 파이썬은 합리적인 기본값을 선택하는 데 매우 똑똑합니다.

이 자습서에서는 파이썬을 사용하여 TCP/IP 연결을 통해 서버에서 파일을 보내고 받는 방법을 살펴봅니다. 다운로드에 실패한 경우 오류 메시지를 인쇄하고 로컬 파일을 삭제합니다. 그렇지 않으면 스크립트는 FTP가 아닌 로컬 파일 저장소에 저장됩니다. 이제 파일을 서버에 업로드해 보겠습니다. 아래 명령 외에도 FTP 연결을 열려면 위에서 사용한 명령을 다시 작성해야 합니다. 이제 디렉터리에서 파일을 얻거나 디렉토리에 파일을 작성하는 방법에 대한 몇 가지 기본 예제에 대해 살펴보겠습니다. 코드에 대한 설명은 각 코드 줄과 함께 주석에 제공됩니다 : 다음으로 원격 서버에서 바이너리 데이터를 검색 한 다음 찾은 내용을 로컬 파일에 씁니다. 마지막 매개 변수인 1024는 버퍼링을 참조합니다. 기본적으로 한 번에 얼마나 많은 데이터를 수행할 것인가? 따라서 1024에서 전체 작업이 완료될 때까지 1024 바이트 청크가 한 번에 전송됩니다. 그러면 현재 작업 디렉토리(예: os.getcwd())에 파일을 씁니다. 이제 FTP 사이트에서 다운로드하려는 일부 파일은 원시 텍스트 파일이 아닌 PDF 또는 엑셀 파일 등과 같은 이진 파일일 수 있습니다.