FTP'ye bir dosya yüklemek için bir komut dosyası yapmak istiyorum.
Giriş sistemi nasıl çalışır? Bunun gibi bir şey arıyorum:
ftp.login=(mylogin)
ftp.pass=(mypass)
Ve diğer oturum açma kimlik bilgileri.
FTP'ye bir dosya yüklemek için bir komut dosyası yapmak istiyorum.
Giriş sistemi nasıl çalışır? Bunun gibi bir şey arıyorum:
ftp.login=(mylogin)
ftp.pass=(mypass)
Ve diğer oturum açma kimlik bilgileri.
Yanıtlar:
Kullanın ftplib
, şöyle yazabilirsiniz:
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 ana bilgisayarı TLS gerektiriyorsa, bunun yerine kullanın .
Geri almak için şunları kullanabilirsiniz urllib.retrieve
:
import urllib
urllib.urlretrieve('ftp://server/path/to/file', 'file')
DÜZENLE :
Mevcut dizini bulmak için şunu kullanın FTP.pwd()
:
FTP.pwd (): Sunucudaki geçerli dizinin yol adını döndürür.
Dizini değiştirmek için şunu kullanın FTP.cwd(pathname)
:
FTP.cwd (yol adı): Sunucudaki geçerli dizini ayarlayın.
ftplib artık bağlam yöneticilerini destekliyor, bu yüzden sanırım daha da kolay hale getirilebilir
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)
Dosyayı veya oturumu kapatmaya gerek yok
Python için büyük olasılıkla ftplib modülünü kullanmak isteyeceksiniz
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"
Bu sizi bir FTP sunucusuna kaydeder. Oradan ne yapacağınız size kalmış. Sorunuz gerçekten yapılması gereken diğer işlemleri göstermiyor.
Bunu dene:
#!/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 üzerinde bu rotaya giderken hata alır.
Burada benzer bir soruyu yanıtladım
IMHO, FTP sunucunuz Fabric ile iletişim kurabiliyorsa lütfen Fabric ile iletişime geçin. Çiğ yapmaktan çok daha iyidir ftp
.
FTP hesabım var, dotgeek.com
bu yüzden bunun diğer FTP hesapları için çalışıp çalışmayacağından emin değilim.
#!/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')
dosyayı farklı kaydedin fabfile.py
ve fab copy
yerel olarak çalıştırın .
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.
Bir kez daha, her zaman parola girmek istemiyorsanız,
env.password = 'my_password'
Şifreleme hatasını almamak için aşağıdaki komutları da deneyebilirsiniz.
ftp = ftplib.FTP_TLS("ftps.dummy.com")
ftp.login("username", "password")
ftp.prot_p()
file = open("filename", "rb")
ftp.storbinary("STOR filename", file)
file.close()
ftp.close()
ftp.prot_p () bağlantılarınızın şifreli olduğundan emin olun
Aşağıdaki işlevi kullanabilirsiniz. Henüz test etmedim, ancak iyi çalışması gerekiyor. Hedefin, kaynağın tam dosya yolu olduğu bir dizin yolu olduğunu unutmayın.
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)
nedir % f
?
print ftp.pwd()
mevcut yolu size gösterecektir.