[PYTHON] 파이썬을 사용하지 않고 FTP 파일을 읽을 수 있습니까?
PYTHON파이썬을 사용하지 않고 FTP 파일을 읽을 수 있습니까?
파이썬의 ftplib을 쓰지 않고 파일을 읽으려고합니다. 대략 다음과 같은 것 :
def get_page(url):
try:
return urllib.urlopen(url).read()
except:
return ""
하지만 FTP를 사용합니다.
나는 시도했다 :
def get_page(path):
try:
ftp = FTP('ftp.site.com', 'anonymous', 'passwd')
return ftp.retrbinary('RETR '+path, open('page').read())
except:
return ''
그러나 이것은 효과가 없습니다. 문서의 유일한 예는 ftp.retrbinary ( 'RETR README', open ( 'README', 'wb'). write) 형식을 사용하여 파일을 쓰는 것입니다. 먼저 쓰지 않고도 ftp 파일을 읽을 수 있습니까?
해결법
-
==============================
1.retrbinary 메서드는 ftp 연결에서 파일 내용을 검색 할 때마다 호출되는 함수에 대한 참조를 두 번째 매개 변수로 받아들입니다.
retrbinary 메서드는 ftp 연결에서 파일 내용을 검색 할 때마다 호출되는 함수에 대한 참조를 두 번째 매개 변수로 받아들입니다.
다음은 간단한 예입니다.
#!/usr/bin/env python from ftplib import FTP def writeFunc(s): print "Read: " + s ftp = FTP('ftp.kernel.org') ftp.login() ftp.retrbinary('RETR /pub/README_ABOUT_BZ2_FILES', writeFunc)
writeFunc를 구현하여 호출 된 객체를 사용하는 내부 변수에 실제로 읽은 데이터를 추가하도록합니다.
#!/usr/bin/env python from ftplib import FTP class Reader: def __init__(self): self.data = "" def __call__(self,s): self.data += s ftp = FTP('ftp.kernel.org') ftp.login() r = Reader() ftp.retrbinary('RETR /pub/README_ABOUT_BZ2_FILES', r) print r.data
업데이트 : Python 표준 라이브러리에 이런 종류의 모듈이 있다는 것을 깨달았습니다. StringIO :
#!/usr/bin/env python from ftplib import FTP from StringIO import StringIO ftp = FTP('ftp.kernel.org') ftp.login() r = StringIO() ftp.retrbinary('RETR /pub/README_ABOUT_BZ2_FILES', r.write) print r.getvalue()
from https://stackoverflow.com/questions/11208957/is-it-possible-to-read-ftp-files-without-writing-them-using-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] Django 1.8 이상을 채우는 동안 "모델이 아직로드되지 않았습니다"오류가 발생했습니다. (0) | 2018.11.05 |
---|---|
[PYTHON] 작성 줄은 줄 바꿈없이 줄을 긋고 파일을 채 웁니다. (0) | 2018.11.05 |
[PYTHON] BeautifulSoup에 InnerText가 있습니까? (0) | 2018.11.05 |
[PYTHON] 파이썬으로 작성된 프로그램을 컴파일 할 수 있습니까? [닫은] (0) | 2018.11.05 |
[PYTHON] 자기 .__ dict __. 업데이트 (** kwargs) 좋은 스타일이나 가난한 스타일? (0) | 2018.11.05 |