【发布时间】:2012-01-21 13:22:54
【问题描述】:
我正在尝试在 Python3.2 中制作一个连接到服务器并下载所有内容的 FTP 脚本。虽然它可以完美地处理文件,但目录似乎让事情有点麻烦。我已经做到了,所以当它遇到目录时,它会将变量目录设置为新目录并希望下载它的内容。它将排除已完成的项目,如果目录中的所有内容都已完成,它将返回目录直到完成。虽然代码似乎可以正常工作,但它不起作用。似乎我无法在 for 循环的会话中更改目录。这是代码: **注意一些变量稍后可能会被删除,只是想在这里得到一个粗略的草稿
import os, time, math, ftplib, zipfile, socket ## Just the regular imports... I guess
session = ftplib.FTP("CENSORED.info")
session.login(user="CENSORED",passwd="CENSORED")
dbpath = "/home/CENSORED/Dropbox/CENSORED"
debuglevel=0
session.set_debuglevel(debuglevel)
if session.getwelcome() != "":
level = 1
completed = []
leveldir = {}
currentdir = session.pwd()
directory = session.nlst()
reset = False
print("CONNECTED")
print("")
while level != 0:
if reset == False:
level = 0
reset = True
try:
print(directory)
for file in directory:
if file not in completed:
try:
print("Getting",file)
savefile = open(os.path.join(dbpath,file), 'wb')
session.retrbinary("RETR %s" % file, savefile.write)
completed.append(file)
except ftplib.error_perm:
level += 1
leveldir[level] = currentdir
session.cwd(currentdir + file)
leveldir[level] = currentdir
directory = session.nlst()
print(leveldir,level)
print(file,"is a Directory! Attempting to enter...")
if directory in completed:
level -= 1
session.cwd(leveldir[level])
except IOError:
print("Could Not obtain directory...")
else:
print("")
print("DISCONNECTED")
session.close()
print("")
print("DISCONNECTED")
**注意我不能保证间距是正确的,在 Stackoverflow 的帖子编辑器中很难分辨。对于一个关于编程的网站,我认为他们应该比他们更好地处理代码 sn-ps。
这是我在控制台中遇到的错误:
lib is a Directory! Attempting to enter...
Getting minecraft_server.jar
Traceback (most recent call last):
File "CENSOREDftpbackup.py", line 34, in <module>
session.retrbinary("RETR %s" % file, savefile.write)
File "/usr/local/lib/python3.2/ftplib.py", line 417, in retrbinary
with self.transfercmd(cmd, rest) as conn:
File "/usr/local/lib/python3.2/ftplib.py", line 379, in transfercmd
return self.ntransfercmd(cmd, rest)[0]
File "/usr/local/lib/python3.2/ftplib.py", line 342, in ntransfercmd
resp = self.sendcmd(cmd)
File "/usr/local/lib/python3.2/ftplib.py", line 255, in sendcmd
return self.getresp()
File "/usr/local/lib/python3.2/ftplib.py", line 229, in getresp
raise error_perm(resp)
ftplib.error_perm: 550 Can't open minecraft_server.jar: No such file or directory
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "CENSORED.py", line 40, in <module>
session.cwd(currentdir + file)
File "/usr/local/lib/python3.2/ftplib.py", line 556, in cwd
return self.voidcmd(cmd)
File "/usr/local/lib/python3.2/ftplib.py", line 260, in voidcmd
return self.voidresp()
File "/usr/local/lib/python3.2/ftplib.py", line 234, in voidresp
resp = self.getresp()
File "/usr/local/lib/python3.2/ftplib.py", line 229, in getresp
raise error_perm(resp)
ftplib.error_perm: 550 Can't change directory to /minecraft_server.jar: Not a directory
谢谢!
【问题讨论】:
-
复制和粘贴应该适合您。无论如何,应该有一些适合您首选的网络浏览器的插件,让事情变得更容易。在 Firefox 中,我使用It's All Text!。