View difference between Paste ID: xzfK8NQw and Gqi9J538
SHOW: | | - or go back to the newest paste.
1
import ftplib, os, shutil, re
2
3-
host = "ccrma-ftp.stanford.edu"
3+
host = "ftp.server.com"
4
port = 21
5-
#user = "Walt3694"
5+
user = "username"
6-
#password = "65%3AdminZBTSand4"
6+
password = "password"
7
user = ""
8
password = ""
9
10
ftp = ftplib.FTP()
11
ftp.connect(host,port)
12
ftp.login(user,password)
13
14
def output(out):
15
	return 0
16
17
def copy_directory(directory="", depth=0,exceptions = None):
18
	if exceptions != None and len(exceptions) > 0:
19
		re_str = ("(" + "|".join(exceptions) + ")").lower()
20
	else:
21
		re_str = "^$"
22
	if exceptions == None:
23
		exceptions = []
24
	elif re.match(re_str,directory.lower()):
25
		return
26
	newdir = os.path.join(os.getcwd(),host)
27
	if(directory != ""):
28
		newdir = os.path.join(os.getcwd(),directory)
29
		
30
	if(os.path.exists(newdir)):
31
		shutil.rmtree(newdir)
32
	os.mkdir(newdir)
33
	os.chdir(newdir)
34
	files = []
35
	try:
36
		ftp.cwd(directory)
37
	except ftplib.error_perm:
38
		return
39
	try:
40
			files = ftp.nlst()
41
	except ftplib.error_perm:
42
			print((" "+("  |" * (depth))+"-No Files in Folder"))
43
	print(" "+("  |" * (depth)))
44
	if(len(files) == 0):
45
		print(" "+("  |" * (depth))+"-No Files in Folder")
46
	for f in files:
47
		if(f == "." or f == ".."):
48
				continue
49
		print(" "+("  |" * (depth))+"-"+f,"- (IGNORED)" if re.match(re_str,f.lower()) else "")
50
		if re.match(re_str,f.lower()):
51
			continue
52
		try:
53
			ftp.size(f)
54
			local_f = os.path.join(os.getcwd(),f)
55
			fh = open(local_f, "wb")
56
			ftp.retrbinary("RETR "+f, fh.write, 8*1024)
57
			fh.close()
58
		except ftplib.error_perm as err:
59
			if(err.args[0].count("553") > 0):
60
				continue
61
			copy_directory(f,depth+1,exceptions)
62
	print(" "+("  |" * (depth-1)))
63
	ftp.cwd("..")
64
	os.chdir("..")
65
66
copy_directory()