FTP client ile otomatik dosya yükleme

Merhaba Yazbel Ailesi,

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> 

Yardımlarınız için şimdiden teşekkürler.

Merhaba,

Kütüphanenin linkini paylaşmışsınız, biraz okuma yapmanız gerekiyor. Kendinize zaman verin. Ayrıca hangi kodları denediniz de hata aldınız bilmiyoruz.

Merhaba,

Python’da “config” diye bir modül yok diyor hatada. Acaba “configparser” modülünü mü kullanmak istediniz.

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.

Kütüphane linki : https://docs.python.org/3/library/ftplib.html#module-ftplib

Tüm klasörleri çektiğini iddia eden biri var bu linkte ilk cevap : https://stackoverflow.com/questions/5663787/upload-folders-from-local-system-to-ftp-using-python-script

from ftplib import FTP
import os

#domain name or server ip:

ftp = FTP('www.otomasyonvemakine.com')
ftp.login(user='otomasy1', passwd ='3Xj4hdsfghs')



print("logged in and pointing to manjunath")


# filename = 'news.txt'
#localfile = open(filename, 'wb')
#ftp.retrbinary('RETR ' + filename, localfile.write, 1024)
#localfile.close()
#print("download done")


filename = r"D:\kişisel\Codes\.prg
ftp.storbinary('STOR '+os.path.basename(filename), open(filename, 'rb'))
print("upload done")


ftp.quit()

Böyle birşey olabilir mi ? ve nasıl ?

`    ``
    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