Bir ftp client oluşturup local ağımdan başka bir local ftp server’a otomatik olarak dosya çekmek istiyorum. FTPlib adlı bir kütüphane var fakat nasıl kullanacağım hakkında bir bilgiye sahip değilim. Başlangıç seviyesinde olduğum için basit bir anlatım yapmanızı rica ederim.
paragraf girintisi 4 boşluktan oluşan, önceden biçimlendirilen yazı
Kütüphane linki yukarıda. Kodları denedim fakat aşağıdaki hatayı aldım ;
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
Try the new cross-platform PowerShell https://aka.ms/pscore6
PS C:\Users\User\Documents\QtProjects\pencere> & "C:/Program Files/Python38/python.exe" d:/kişisel/Codes/ftp.py
Traceback (most recent call last):
File "d:/kişisel/Codes/ftp.py", line 2, in <module>
import config
ModuleNotFoundError: No module named 'config'
PS C:\Users\User\Documents\QtProjects\pencere>
Dediğiniz gibi hata nedeni config dosyasının eksik olmasıymış aşağıdaki kodları yazdığım zaman yükleme yapmayı başardım. Ancak sadece dosyaları dosya ismine göre atabiliyorum. Benim istediğim belli bir klasörden tüm dosyaları çekmek ama onu başaramadım.
` ``
def upload_file():
route = '/root/hb/zip'
files=os.listdir(route)
targetList1 = [fileName for fileName in files if fnmatch.fnmatch(fileName,'*.zip')]
print 'zip files on target list:' , targetList1
try:
s = ftplib.FTP(ftp_server, ftp_user, ftp_pass)
#s.cwd('One/Two/Broad') ##Commented Hard-Coded
try:
print "Uploading zip files"
for record in targetList1:
file_name= ruta +'/'+ record
rdir = record.split('_')[0] ##get the remote dir from filename
s.cwd('One/Two/' + rdir) ##point cwd to the rdir in last step
print 'uploading file: ' + record
f = open(file_name, 'rb')
s.storbinary('STOR ' + record, f)
f.close()
s.quit()
except:
print "file not here " + record
except:
print "unable to connect ftp server"
```
Tüm klasörlerii çekmek için os.walk() methodunu kullanarak basit bir algoritma kurup dizin ağacını kurabilirsiniz ve ona göre dosyaları tek tek kendi dizinlerine yükleyebilirsiniz. Zaman bulduğum an yapacağım
Bütün dosyaları da çekebildim ancak bu işlemi bir döngüye sokmam gerekiyor . Yani sürekli olarak oraya sorgu göndermesini istiyorum. Aşağıdaki kodlarla FTP ye belirli bir klasördeki bütün dosyaları yükleyebiliyorsunuz. Ben o belirli klasöre herhangi bir dosya attığımda onu otomatik olarak upload etmesini istiyorum.
import ftplib
import os
server = 'www.otomasyonvemakine.com'
username = 'otomasssy1'
password = '3Xj4un*sadaa)N3'
myFTP = ftplib.FTP(server, username, password)
myPath = r'D:\kişisel\Codes'
def uploadThis(path):
files = os.listdir(path)
os.chdir(path)
for f in files:
if os.path.isfile(path + r'\{}'.format(f)):
fh = open(f, 'rb')
myFTP.storbinary('STOR %s' % f, fh)
fh.close()
elif os.path.isdir(path + r'\{}'.format(f)):
myFTP.mkd(f)
myFTP.cwd(f)
uploadThis(path + r'\{}'.format(f))
return
myFTP.cwd('..')
os.chdir('..')
uploadThis(myPath) # now call the recursive function