FTP에 파일을 업로드하는 스크립트를 만들고 싶습니다.
로그인 시스템은 어떻게 작동합니까? 나는 다음과 같은 것을 찾고 있습니다.
ftp.login=(mylogin)
ftp.pass=(mypass)
기타 모든 로그인 자격 증명.
FTP에 파일을 업로드하는 스크립트를 만들고 싶습니다.
로그인 시스템은 어떻게 작동합니까? 나는 다음과 같은 것을 찾고 있습니다.
ftp.login=(mylogin)
ftp.pass=(mypass)
기타 모든 로그인 자격 증명.
답변:
사용 ftplib
하면 다음과 같이 작성할 수 있습니다.
import ftplib
session = ftplib.FTP('server.address.com','USERNAME','PASSWORD')
file = open('kitten.jpg','rb') # file to send
session.storbinary('STOR kitten.jpg', file) # send the file
file.close() # close file and FTP
session.quit()
ftplib.FTP_TLS
FTP 호스트에 TLS가 필요한 경우 대신 사용하십시오 .
검색하려면 다음을 사용할 수 있습니다 urllib.retrieve
.
import urllib
urllib.urlretrieve('ftp://server/path/to/file', 'file')
편집 :
현재 디렉토리를 찾으려면 다음을 사용하십시오 FTP.pwd()
.
FTP.pwd () : 서버에있는 현재 디렉토리의 경로 이름을 반환합니다.
디렉토리를 변경하려면 다음을 사용하십시오 FTP.cwd(pathname)
.
FTP.cwd (경로명) : 서버의 현재 디렉토리를 설정합니다.
ftplib는 이제 컨텍스트 관리자를 지원 하므로 훨씬 쉽게 만들 수 있습니다.
from ftplib import FTP
from pathlib import Path
file_path = Path('kitten.jpg')
with FTP('server.address.com', 'USER', 'PWD') as ftp, open(file_path, 'rb') as file:
ftp.storbinary(f'STOR {file_path.name}', file)
파일이나 세션을 닫을 필요가 없습니다.
파이썬에 ftplib 모듈 을 사용하고 싶을 것입니다.
import ftplib
ftp = ftplib.FTP()
host = "ftp.site.uk"
port = 21
ftp.connect(host, port)
print (ftp.getwelcome())
try:
print ("Logging in...")
ftp.login("yourusername", "yourpassword")
except:
"failed to login"
FTP 서버에 로그인합니다. 거기에서하는 일은 당신에게 달려 있습니다. 귀하의 질문은 실제로 수행해야하는 다른 작업을 나타내지 않습니다.
이 시도:
#!/usr/bin/env python
import os
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname', username="username", password="password")
sftp = ssh.open_sftp()
localpath = '/home/e100075/python/ss.txt'
remotepath = '/home/developers/screenshots/ss.txt'
sftp.put(localpath, remotepath)
sftp.close()
ssh.close()
SSHException: Error reading SSH protocol banner" when using ProxyCommand
합니다. ftp에서이 경로를 사용할 때 종종 오류가 발생합니다.
난 그냥 비슷한 질문에 대답 여기
FTP 서버 패브릭하시기 바랍니다 우리 패브릭과 통신 할 수있는 경우, 이럴. 날것보다 훨씬 낫습니다 ftp
.
의 FTP 계정이 dotgeek.com
있으므로 다른 FTP 계정에서도 작동하는지 확실하지 않습니다.
#!/usr/bin/python
from fabric.api import run, env, sudo, put
env.user = 'username'
env.hosts = ['ftp_host_name',] # such as ftp.google.com
def copy():
# assuming i have wong_8066.zip in the same directory as this script
put('wong_8066.zip', '/www/public/wong_8066.zip')
파일을 다른 이름으로 저장하고 로컬에서 fabfile.py
실행하십시오 fab copy
.
yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
다시 한번 말하지만, 항상 비밀번호를 입력하고 싶지 않다면
env.password = 'my_password'
아래 기능을 사용할 수 있습니다. 아직 테스트하지 않았지만 제대로 작동합니다. 목적지는 소스가 완전한 파일 경로 인 디렉토리 경로임을 기억하십시오.
import ftplib
import os
def uploadFileFTP(sourceFilePath, destinationDirectory, server, username, password):
myFTP = ftplib.FTP(server, username, password)
if destinationDirectory in [name for name, data in list(remote.mlsd())]:
print "Destination Directory does not exist. Creating it first"
myFTP.mkd(destinationDirectory)
# Changing Working Directory
myFTP.cwd(destinationDirectory)
if os.path.isfile(sourceFilePath):
fh = open(sourceFilePath, 'rb')
myFTP.storbinary('STOR %s' % f, fh)
fh.close()
else:
print "Source File does not exist"
myFTP.storbinary('STOR %s' % f, fh)
무엇입니까 % f
?
print ftp.pwd()
수있는 현재 경로를 표시합니다.