나는 임시 파일을 디스크에 같은 뭔가를 저장하지 않고 파이썬에서 내 FTP 사이트에 직접 텍스트를 작성하기 위해 찾고 있어요? 대단히 감사합니다. the docs으로파이썬 직접 FTP
6
에 파일을 생성 쓰기
A
답변
8
말 :
스토어 바이너리 전송 모드에서 파일을. cmd은 적절한
STOR
명령이어야합니다 :"STOR filename"
. 파일이 ... 그래서
크기 저장되는 데이터를 제공하는 블록 크기의 블록의 read()
방법을 사용하여 EOF 때까지 읽을 수있는 파일 객체 (바이너리 모드로 열립니다)입니다, 당신은 그것을 줄 필요 적절한 read
메소드를 가진 파일과 유사한 객체.
문자열은 파일 형 개체가 아니지만 io.BytesIO
입니다. 그래서 :
import io
bio = io.BytesIO(b'text to store')
ftp.storbinary('STOR myfile.html', bio)
, 나는 그 'rb'
인수를 통과하지 못한 사항. storbinary
의 세 번째 매개 변수는 블록 크기이며, 'rb'
은 분명히 유효한 블록 크기가 아닙니다.
파이썬 2.5 이하에서 작업해야하는 경우 Dan Lenski의 답변을 참조하십시오.
파이썬 2.6-2.7로 작업해야하고 파일과 유사한 객체의 성능이 중요합니다 (여기에는 없지만 어떤 경우가있을 수 있습니다). CPython 만 신경 써야합니다 그의 대답을 사용하지만 cStringIO
을 StringIO
대신 사용하십시오. (일반 StringIO
은 2.x에서 느리고 io.BytesIO
은 약 3.3보다 훨씬 느립니다.)
5
StringIO
object을 사용하려고 했습니까?
from ftplib import *
import StringIO
ftp = FTP('ftp.mysite.com')
ftp.login('un','pw')
ftp.cwd('/')
ftp.storbinary('STOR myfile.html', StringIO.StringIO('text to store'))
편집 : @abarnert's answer는 Python3에 해당합니다. 내 것은 Python2 버전이다.
관련 문제
- 1. FTP 서버에 직접 CSV 파일 만들기
- 2. 파이썬 직접 예외
- 3. Sockect 직접 프로토콜 대 FTP Java 라이브러리
- 4. 파이썬 : ftp 파일이 버퍼에 갇혔습니까?
- 5. 파이썬 : ftp 및 progressbar 2.3
- 6. 파이썬 얻을 최근 파일 FTP
- 7. 파이썬 ftp bruteforcer가 작동하지 않습니다.
- 8. ftp 파일이 파이썬 ftp 라이브러리가있는 일반 파일인지 또는 폴더인지 확인합니다.
- 9. 편집기에서 텍스트를 직접 파이썬 스크립트
- 10. 파이썬 JSON은 사전에 직접 액세스
- 11. 직접 파이썬 모듈을 가져오고 호출하십시오.
- 12. 파이썬 이름 바꾸기 ftp 업로드 파일 삭제
- 13. 파이썬 FTP 한번에 여러 파일 업로드
- 14. 파이썬 오픈 FTP URL 및 파일에 쓰기
- 15. 파이썬 FTP 파일 이름에 잘못된 오류
- 16. ftp 서버에있는 파일의 데이터를 SQL 서버로 직접 가져 오기
- 17. FTP 폴더의 스트림에서 파일을 직접 만들고 저장하는 방법은 무엇입니까?
- 18. Java : 라이브러리에서 URL을 가진 파일을 직접 FTP 서버에 업로드
- 19. 몽고 내가 직접 파이썬 스크립트에서 gridfs에서 이미지를 제공 할 파이썬
- 20. 파이썬 쉘에서 직접 파이썬 스크립트를 저장하는 방법은 무엇입니까?
- 21. 배쉬/FTP : FTP
- 22. bash에서 직접 파이썬 스크립트를 실행할 수 있습니까?
- 23. Qt 파이썬 일정 : 선택한 날 직접 액세스
- 24. Qt 디자이너에게 직접 파이썬 함수를 신호로 적용합니다.
- 25. 웹에서 직접 그림의 파이썬 이미지 처리
- 26. 텍스트 파일과 html로 직접 파이썬 출력
- 27. 직접 공급자 연합 ID를위한 GAE 파이썬 예제
- 28. 명령 행에 직접 파이썬 스크립트 작성하기
- 29. 파이썬은이 조각 파이썬 요청의 예에서 직접
- 30. 내가 FTP 클라이언트를 만들고있어 FTP
나를 위해 일했지만 BytesIO 바이트와 비슷한 개체로 문자열을 인코딩해야했습니다. 그래서 :'bi = io.BytesIO ('text to store'.encode ('utf-8'))' – iomihai
@iomihai 글쎄,이 경우에는 str 리터럴과 인코딩 대신 바이트 리터럴을 사용할 수 있습니다. 그것. 하지만 그래, 나는 대답을 편집 할게. – abarnert