ich brauchte ein kleines Script, dass mir einen lokalen Ordner auf einen ftp-Server spiegelt. Da ich noch nicht so lange dabei bin, schleichen sich bei mir sicherlich noch der ein oder andere Bug oder Schönheitsfehler ein. Vielleicht findet ja einer mal die Zeit kurz durch den Code zu huschen. Kritik erwünscht, sei sie noch so klein

Danke im Voraus
Code: Alles auswählen
import ftplib, os, glob
from time import sleep
def uploaddir(ftp, directory):
for filename in glob.glob(directory + '/*'):
absPath = os.path.abspath(filename)
basename = os.path.basename(filename)
if os.path.isdir(absPath):
try:
try:
print "Befehl: mkd %s"%basename
ftp.mkd(basename)
except:
print "Status: %s already exist!"%basename
try:
print "Befehl: CWD %s"%basename
ftp.cwd(basename)
print "Status: uploaddir: %s"%basename
uploaddir(ftp,absPath)
print "Befehl: CWD %s"%"../"
ftp.cwd("..")
except:
print "Error: uploading content of "+absPath
except:
print "mkd \"%s\" fehlgeschlagen!"%(basename)
else:
try:
filelist = ftp.nlst(".")
if not filelist.count(basename) > 0:
f = open(absPath, "rb")
print "Befehl: STOR %s"%basename
ftp.storbinary("STOR "+basename, f)
f.close()
else:
print "Status: File \"%s\" already exist!"%basename
except:
print "Error: STOR \"%s\" fehlgeschlagen!"%(basename)
try:
ftp = ftplib.FTP()
ftp.connect("localhost", 21)
sleep(0.2)
ftp.login("user", "pw")
sleep(0.5)
uploaddir(ftp,"C:\\ftpfolder")
ftp.quit()
except:
print "error: (10054, 'Connection reset by peer')"
Zack